我想知道确切的 {} \;
和 {} \+
和 | xargs ...
做什么。请澄清这些与解释。
以下3个命令运行并输出相同的结果,但第一个命令需要一点时间,格式也没有什么不同。
find . -type f -exec file {} \;
find . -type f -exec file {} \+
find . -type f | xargs file
这是因为第一个命令对来自 find
命令的每个文件都运行 file
命令。所以,基本上它是这样运行的:
file file1.txt
file file2.txt
但是后两个发现与 -exec
命令运行文件命令一次所有文件如下:
file file1.txt file2.txt
然后运行以下命令,其中第一个命令运行没有问题,但第二个命令提供错误消息。
find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \+ #gives error:find: missing argument to `-exec'
对于使用 {} \+
的命令,它给出了错误消息
find: missing argument to `-exec'
为什么? 有人能解释一下我做错了什么吗?