在Mac终端中,我要查找包含至少一个具有指定扩展名的文件的所有目录,并将它们复制到其他位置。我发现find . -iname '*.jpg' -exec dirname {} \;
似乎可以找到包含*.jpg
文件的所有目录,但是我不确定如何复制它们。我尝试将其与合并,rsync
但无法使其正常工作。最好的方法是什么?
这是一个bash
友好的衬板,可将其中包含jpg的所有文件夹复制到一个名为backup的文件夹中,同时保持目录结构
mkdir backup; for folder in $(find . -type f -name '*.jpg' | sed -r 's|/[^/]+$||' |sort |uniq); do cp -r --parents $folder backup; done
首先,它创建一个空backup
文件夹,然后该find
命令在当前目录中查找所有以结尾的文件.jpg
。的sed
,sort
和uniq
命令修剪查找输出到刚刚建立的目录名称和删除重复。最终,cp -r --parents
in循环会在创建任何丢失的文件时递归地复制文件夹。
您可以像这样sed -r
通过使用-printf
标志来四处使用find
mkdir backup; for folder in $(find . -type f -name '*.jpg' -printf "%h\n" |sort |uniq); do cp -r --parents $folder backup; done
如果您find
不支持-printf
,则可以尝试使用grep
mkdir backup; for folder in $(find . -type f -name '*.jpg' | grep -o "\(.*\)/" |sort |uniq); do cp -r --parents $folder backup; done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句