exec與xargs區別
阿新 • • 發佈:2017-06-16
必須 合成 作文 back 方便 否則 dir name color rm: cannot remove `test/test‘: No such file or directory
rm: cannot remove `zzh‘: No such file or directory
$find test/ -name *zzh -exec rm {} \;
相比之下,也不難看出各自的缺點
1、exec 每處理一個文件或者目錄,它都需要啟動一次命令,效率不好;
2、exec 格式麻煩,必須用 {} 做文件的代位符,必須用 \; 作為命令的結束符,書寫不便。
3、xargs 不能操作文件名有空格的文件;
綜上,如果要使用的命令支持一次處理多個文件,並且也知道這些文件裏沒有帶空格的文件 ,
那麽使用 xargs比較方便; 否則,就要用 exec了。
沒有哪個更好哪個更不好 復習一下
exec是對每個找到的文件執行一次命令,除非這單個的文件名超過了幾k,否則不
會出現命令行超長出報錯的問題。
而xargs是把所有找到的文件名一股腦的轉給命令。當文件很多時,這些文件名組合成的命
令行參數很容易超長,導致命令出錯。
find | xargs 這種組合在處理有空格字符的文件名時也會出錯,因為這時執行的命令
已經不知道哪些是分割符、哪些是文件名中的空格! 而用exec則不會有這個問題。
$touch test/‘test zzh‘
$find test/ -name *zzh
test/test zzh
$find test/ -name *zzh |xargs rm
rm: cannot remove `zzh‘: No such file or directory
$find test/ -name *zzh -exec rm {} \;
相比之下,也不難看出各自的缺點
1、exec 每處理一個文件或者目錄,它都需要啟動一次命令,效率不好;
2、exec 格式麻煩,必須用 {} 做文件的代位符,必須用 \; 作為命令的結束符,書寫不便。
3、xargs 不能操作文件名有空格的文件;
綜上,如果要使用的命令支持一次處理多個文件,並且也知道這些文件裏沒有帶空格的文件
那麽使用 xargs比較方便; 否則,就要用 exec了。
exec與xargs區別