繁体   English   中英

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

[英]macOS - Copy all specific filename found in directories to another directory

我想复制所有(在这种情况下)不同目录中的 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

您可以使用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命令。

使用rsync

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

使用cp

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

PS - 不确定哪个更有效。 我通常更喜欢rsync的副本和移动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM