我试过
$ find Music -exec cp -v {} \>/dev/null \;
出现错误
'Music/AlbumArtSmall.jpg' -> '>/dev/null'
cp: cannot create regular file '>/dev/null': No such file or directory
我试过
$ find Music -exec echo {} && echo cp {} \>/dev/null \;
find: missing argument to `-exec'
和
$ find Music -exec echo {} \\; echo cp {} \>/dev/null \;
find: missing argument to `-exec'
和
$ find Music -exec echo {} \&\& cp {} \>/dev/null \;
Music && cp Music >/dev/null
...
我试过
$ find Music -exec bash -c 'echo "{}" && echo cp \"{}\" /dev/null' \;
Music/4-Mat - Intro Music.mp3
cp "Music/4-Mat - Intro Music.mp3" /dev/null
看起来像它会工作,但它给了
$ find Music -exec bash -c 'echo "{}" && cp \"{}\" /dev/null' \;
Music/4-Mat - Intro Music.mp3
cp: target '/dev/null' is not a directory
当我拿出第二个“回音”时。
这是一个类似但不相同的问题:使用exec查找:如何对每个文件执行多步条件操作
您似乎没有得到正确的组合就四处走动:
find Music -exec cp -v {} /dev/null \;
您至少需要两个参数cp
,源和一个目标,它们可以是文件或目录。当您转义时,>
您将删除其重定向属性,因此>/dev/null
成为目标,在当前目录中查找子目录。
请注意,您不能使用-exec
选项指定单个重定向:参数将直接传递给计划的程序,而无需进一步解释Shell。
就我自己而言,我通常更喜欢这种构造-exec
:
find Music | while read -r l; do cp -v "$l" /dev/null; done
然后,我可以在while
子句中使用所有普通的shell命令,包括多个命令,重定向等。
请注意,文件名中的某些字符(例如,嵌入的换行符或开头和结尾的空白)将阻止此解决方案起作用,而原始-exec
答案应适用于所有文件名。我没有任何这样的文件名,因此是我的偏爱。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句