我想复制位于不同目录中的所有mp4,jpg,png文件(在这种情况下)。我会在macOS终端中执行此操作。
例如:
./dir11/dir2/im.png
./dir11/vi.mp4
./dir12/ima.png
./dir12/main.py
./dir12/dir2/infos.txt
./img.jpg
结果:在found/
./found/im.png
./found/vi.mp4
./found/ima.png
./found/img.jpg
答案 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
进行复制和移动。