簡體   English   中英

Bash腳本 - 在變量中存儲沒有空格的find命令輸出

[英]Bash Script - store find command output without spaces in variable

我希望自動化我的xcode項目。 除了帶有空格的項目名稱外,一切正常。 我嘗試了以下命令:

output_apps=`find ./ -name "*.app" -print`
output_apps=`find ./ -name "*.app"`

我跑的時候

find ./ -name "*.app" -print 

沒有存儲到變量,它給我輸出如下所述的預期:

.//Ten EU.app
.//Ten Official App EU.app
.//Ten Official App.app
.//Ten.app

但是,當我將上述命令的輸出存儲在變量中時,如下所示

output_apps=`find ./ -name "*.app" -print`

然后運行以下for循環以獲取名稱

for curr_app in $o
do 
    echo "$curr_app"
done

表明

.//Ten
EU.app
.//Ten
Official
App
EU.app
.//Ten
Official
App.app
.//Ten.app

如何維護每個輸出之間的空格並獲得以下輸出?

Ten EU.app
Ten Official App EU.app
Ten Official App.app
Ten.app

如果您不需要將文件名存儲在變量中,則可以將find -print0xargs -0結合使用。 這會將找到的條目與NUL字節而不是換行符分開。 xargs讀取這些NUL分隔值,並使用盡可能多的參數調用一些命令。

find ./ -name "*.app" -print0 | xargs -0 some-command

如果需要,可以使用xargs -n 1限制給some-command的參數個數

find ./ -name "*.app" -print0 | xargs -0 -n 1 some-command

另一種方法是使用while循環讀取文件

find ./ -name "*.app" -print | while read f; do
    some-command "$f"
done

這會一次調用一個文件。 重要的是將$f括在雙引號中

文件名可以包含空格。 你需要讓find通過NULL(\\0)分隔它們。 使用find -print0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM