例如我有 100 个文件夹,每个文件夹中都有 JPG 和 MOV 文件 我想将所有 jpg 复制到一个文件夹中,将所有 mov 文件复制到另一个文件夹中
例子
folder1
有one.jpg
和two.jpg
和one.mov
folder2
有two2.jpg
和two2.movfolder3
有xxx.jpg
和yyy.mov
想要的结果
文件
jpgfiles
夹包含one.jpg
two.jpg
two2.jpg
xxx.jpg
文件
movfiles
夹包含one.mov
two2.mov
yyy.mov
答案1
您可以为此使用查找。您使用文件夹 1、文件夹 2 等上方的文件夹并在那里执行这些命令。
find /folder/ -type f -name "*.jpg" -exec cp {} "jpgfiles/" +
find /folder/ -type f -name "*.mov" -exec cp {} "movfiles/" +
/folder/
这里是父文件夹。您需要将其修改为您的父文件夹。
编辑:感谢@godlygeek 指出这一点。如果您只想复制唯一文件,可以使用以下命令
find /folder/ -type f -name "*.jpg" -exec bash -c 'test ! -f jpgfiles/${0##*/} && { cp $0 jpgfiles/${0##*/}; }' {} +
find /folder/ -type f -name "*.mov" -exec bash -c 'test ! -f movfiles/${0##*/} && { cp $0 movfiles/${0##*/}; }' {} +
要复制具有唯一文件后缀的冲突文件:
find /folder/ -type f -name "*.jpg" -exec bash -c 'test -f jpgfiles/${0##*/} && { cp $0 jpgfiles/${0##*/}.$RANDOM; }' {} +
find /folder/ -type f -name "*.mov" -exec bash -c 'test -f movfiles/${0##*/} && { cp $0 movfiles/${0##*/}.$RANDOM; }' {} +