我在远程计算机上尝试将所有文件移至文件夹loader.gif
中/Pictures
find . -iname *.gif | grep loader
显示了我想移动的四个文件,我自然尝试过:find . -iname *.gif | grep loader -exec cp *.gif /home/me/
如何loader.gif
通过 afind
和 agrep
命令复制符合我的条件的所有文件? (我使用是grep
因为原始 find 命令结果显示所有.gif
文件,但我只需要loader.gif
文件名)
答案1
GNUly:
find . -iname '*.gif' -print0 | grep -z loader | xargs -r0 cp -t /home/me
POSIXly:
find . -name '*.[gG][iI][fF]' -path '*loader*' -exec sh -c '
exec cp "$@" /home/me' sh {} +
(我使用的-path
所以它与解决方案等效grep
,但听起来您希望loader
在文件名中找到而不是其目录组件,在这种情况下您应该使用-name
)。
请注意,在大写的语言环境中,可能-iname '*.gif'
无法匹配 a (例如 GNU 系统上的土耳其语语言环境)。.GIF
i
İ
I
答案2
我认为xargs
更简单直接的解决方案是:
find . -iname *.gif | grep loader | xargs cp -t /home/me