3
有人能回答多少進程在每種情況下下面的命令創建爲我不理解:解釋創建了多少個進程?
以下三個命令有大致相同的效果:
rm $(find . -type f -name '*.o')
find . -type f -name '*.o' | xargs rm
find . -type f -name '*.o' -exec rm {} \;
有人能回答多少進程在每種情況下下面的命令創建爲我不理解:解釋創建了多少個進程?
以下三個命令有大致相同的效果:
rm $(find . -type f -name '*.o')
find . -type f -name '*.o' | xargs rm
find . -type f -name '*.o' -exec rm {} \;
rm
,另一個爲find
。find
,另一代表xargs
,以及一個或多個rm
。 xargs
將讀取標準輸入,並且讀取的行數多於可作爲參數傳遞給程序的行數(最大值爲ARG_MAX
)。find
,另一個爲.o
,結尾爲rm
。在我看來,選項2是最好的,因爲它正確處理了最大參數限制,並且不會產生太多的過程。不過,我更喜歡使用像這樣(與GNU查找和xargs的):
find . -type f -name '*.o' -print0 | xargs -0 rm
這將終止與\0
,而不是一個換行符每個文件名,因爲在UNIX文件名可以合法包含換行符。這也正確處理文件名中的空格(更常見)。
我們還有'find -exec rm \ +'這在概念上就像'xargs',但是保存了一個進程。 – tripleee 2012-01-15 18:43:37
怎麼樣'找到。 -type f -name'* .o'-delete'?這不好嗎? – 2012-01-15 19:31:01
@Jaypal:是的,它可以在一個過程中完成所有工作。 – 2012-01-15 20:56:33