[英]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.