I want to know exactly what {} ;
and {} +
and | xargs ...
do. Please clarify these with explanations.
Below 3 commands run and output same result but the first command takes a little time and the format is also little different.
find . -type f -exec file {} ;
find . -type f -exec file {} +
find . -type f | xargs file
It's because 1st one runs the file
command for every file coming from the find
command. So, basically it runs as:
file file1.txt
file file2.txt
But latter 2 find with -exec
commands run file command once for all files like below:
file file1.txt file2.txt
Then I run the following commands on which first one runs without problem but second one gives error message.
find . -type f -iname '*.cpp' -exec mv {} ./test/ ;
find . -type f -iname '*.cpp' -exec mv {} ./test/ + #gives error:find: missing argument to `-exec'
For command with {} +
, it gives me the error message
find: missing argument to `-exec'
why is that? can anyone please explain what am I doing wrong?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…