【问题标题】:Move all files in specified folder up one directory将指定文件夹中的所有文件上移一个目录
【发布时间】:2013-01-11 04:40:50
【问题描述】:

我有一个程序将文件提取到一系列子文件夹中,每个子文件夹都有一个“标题”子文件夹。例如:

/share/Videos/Godfather.Part.1
  /share/Videos/Godfather.Part.1/<packagename>
    /share/Videos/Godfather.Part.1/<packagename>/Godfather.avi
/share/Videos/Godfather.Part.2
  /share/Videos/Godfather.Part.2/<packagename>
    /share/Videos/Godfather.Part.2/<packagename>/Godfather2.avi

我想把指定文件夹&lt;packagename&gt;中的文件上移一个目录,这样文件结构如下:

/share/Videos/Godfather.Part.1
  /share/Videos/Godfather.Part.1/Godfather.avi
/share/Videos/Godfather.Part.2
  /share/Videos/Godfather.Part.2/Godfather2.avi

如何在 bash 命令行中完成这项任务?请注意,这是一个使用 2 个文件夹的示例,我有 100 个这样的文件夹。

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    分享和享受。

    for i in `find . -name "*avi"`
    do
        dest=`dirname $i`
        mv $i $dest/..
    done
    

    【讨论】:

    • 感谢您的回答。这有帮助,但我只想要名为 . 的特定子文件夹中的文件
    • 使用-path "*&lt;packagename&gt;/*.avi" 而不是-name "*.ave"
    • 注意:如果任何匹配的文件嵌入了空格,这将中断。更强大的解决方案:find . -path '*&lt;packagename&gt;/*.avi' -exec sh -c 'dest="${1%/*}"; mv "$1" "${dest%/*}"' _ {} ';'
    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 2010-10-12
    • 1970-01-01
    • 2011-11-29
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多