Bash 移动没有特定文件的所有文件夹

Bash 移动没有特定文件的所有文件夹,bash,directory,find,Bash,Directory,Find,我有一个有很多子文件夹的顶部文件夹,我想把所有没有“banner.jpg”文件的文件夹移到另一个地方 例如,我知道我可以为它构建一个大型python脚本,但我想知道是否有一个简单的解决方案,可以使用bash和find?这样的方法 $ mkdir dir1 dir2 final # test material $ ls

我有一个有很多子文件夹的顶部文件夹,我想把所有没有“banner.jpg”文件的文件夹移到另一个地方


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

这样的方法

$ 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”
周围添加引号

for i in $(find #dir -mindepth 1 -maxdepth 3 -type d '!' -exec test -e "{}/banner.jpg" ';' -print) ;do mv $i #newdir;done
#dir=替换为基本dir或/

#newdir=新位置的路径

编辑1:添加了“!”d之后包含所有不包含文件的目录

欢迎使用堆栈溢出。请在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。参见