【问题标题】:Move all folders without a specific file移动没有特定文件的所有文件夹
【发布时间】:2020-09-20 17:06:24
【问题描述】:

我有一个包含很多子文件夹的顶级文件夹,我想将所有没有文件“banner.jpg”的文件夹移动到另一个地方。

我知道我可以为它构建一个大的 python 脚本,但我想知道是否有一个简单的 bash 和 find 的简单解决方案?

【问题讨论】:

标签: bash directory find


【解决方案1】:

这样的事情应该可以工作。

$ mkdir dir1 dir2 final                                              # test material
$ ls                                                                 # check'em
dir1/  dir2/  final/                                                 # it's ok
$ touch dir1/banner.jpg                                              # this 
$ for d in dir* ; do [[ ! -f $d/banner.jpg ]] && mv $d final ; done  # solution
$ ls
dir1/  final/
$ ls final/
dir2/

如果需要,请在 "$d" 周围添加引号。

【讨论】:

    【解决方案2】:
    for i in $(find #dir -mindepth 1 -maxdepth 3 -type d '!' -exec test -e "{}/banner.jpg" ';' -print) ;do mv $i #newdir;done
    

    #dir= 替换为基本目录或./

    #newdir=新位置的路径

    edit1:添加了“!”在 d 之后包含所有不包含您的文件的目录

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多