GNU bash,版本 5.0.17(1)-release (x86_64-pc-linux-gnu)
Ubuntu 20.04.3 LTS
所以,我下载了大约 20 个 7z 文件,我想将它们移动到某个地方,但不是我在下载中已经拥有的以前的 7z 文件。(顺便说一句,文件名中也有一些空格。)所以我确实喜欢
mv `find -mmin -700 -iname "*.7z" -printf "\"%f\" "` ~/FOLDER/
它应该找到在过去 ~11 小时左右修改的所有 7z 文件,并将它们移动到 ~/FOLDER/.
它没有移动所有文件,而是给了我一堆带有文件名片段的错误,例如
mv: cannot stat 'Pinball': No such file or directory
我自己试过这个find
命令,它给了我一个看起来合理的文件列表,每个文件都用引号括起来,都在一行上。我还尝试将find
命令的输出粘贴到中mv PASTED_HERE ~/FOLDER/
,就像我认为反引号基本上 DID 一样,并且效果很好。(我也试过$()
用反引号代替,但我得到了与反引号相同的错误。)出了什么问题?
引号不是文件名的一部分,因此您不能将它们包含在名称中并期望它起作用。
或者(使用 GNU
mv
),echo
无论哪种情况,当您对建议的结果感到满意时,请删除。作为旁注,反引号不再被认为是最佳实践。如果您需要将结果视为单个单词,则可以使用双引号代替
` ... `
use 。$( ... )