2014-06-16 15 views
1

我想使用bash find命令來創建一個數組元素和搜索元素在裏面用for循環。 我需要做這樣的事情:

for file in $(find -? dirname) ; do 
echo element contains $file 
done 

我知道,你可以做找到MAC(其解析空格和\ n的xargs的一樣)-X,但有什麼辦法可以在Linux上做? 預先感謝您的回覆-X的

+0

最好是用'find - ? dirname -exec echo元素包含{} \;'。我不知道-X在OSX中做了什麼,所以在這一點上我不能幫你。 – slim

+3

OS X文檔聲明'-X'使得它可以跳過會導致'xargs'問題的文件名,因爲它們包含空格或引號。更好的解決方案是使用'find -exec'或'find -print0 | xargs -0'。 – Barmar

回答

3

的OSX find手冊頁說:

但是,您不妨考慮結合 的-print0主要用``xargs的-0「」作爲一個有效的選擇。

所以,你可以採取這個建議:

find dirname -print0 | xargs -0 grep foo # or whatever it is you wanted to do 

或者,找到可以爲每個找到的文件本身執行命令:

find dirname -exec echo found {} \; 

注意逃脫;終止 - 它只是你必須吸取約find -exec

或爲xargs的類分塊:

find dirname -exec grep foo {} + 
相關問題