macOS-将目录中找到的所有特定文件名复制到另一个目录

时间:2018-11-03 07:14:23

标签: macos

我想复制位于不同目录中的所有mp4,jpg,png文件(在这种情况下)。我会在macOS终端中执行此操作。

例如:

./dir11/dir2/im.png
./dir11/vi.mp4
./dir12/ima.png
./dir12/main.py
./dir12/dir2/infos.txt
./img.jpg

结果:在found/

中复制mp4,jpg和png文件
./found/im.png
./found/vi.mp4
./found/ima.png
./found/img.jpg

2 个答案:

答案 0 :(得分:0)

您可以使用find查找不同文件名的列表,然后通过xargs将其通过管道传输到cp

find ./looking -type f \( -name "*.mp4" -or -name "*.jpg" \) | xargs cp -t ./found

这会将文件从文件夹./looking复制到文件夹/found ...

修改

或者在您的情况下,您可能只想将./looking替换为./

macOS的更新版本

由于macOS cp不支持-t

find . -type f ( -iname "*.log" -or -iname "*.jpg" ) | sed 's/ /\\ /g' | xargs -I '{}' cp '{}' ../test-out

位置:

  • find部分查找名为* .log或* .jpg的所有文件(不是文件夹),而不区分大小写(-iname代替-name)
  • sed部分在路径中的任何空格之前插入“ \”
  • xargs部分使用占位符({})将所有参数放入cp命令中。

答案 1 :(得分:0)

使用rsync

$ find -E . -regex '.*\.(jpg|png|mp4)' -exec rsync -avzh {} ./found/ \;

使用cp

$ find -E . -regex '.*\.(jpg|png|mp4)' -exec cp {} ./found/ \;

PS-不确定哪种效率更高。我通常更喜欢rsync进行复制和移动。