2017-10-10 44 views
0

有沒有辦法將包含空白的所有文件名傳遞給管道,或者至少包含空格的文件?爲此,我試圖:find -print0 -name「* *」(空白)

~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -name "* *" | wc -c 
     0 
~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -print0 -name "* *" | wc -c 
    247 
~/Desktop> 

如您所見,沒有-print0的命令在當前目錄中準確地找不到包含空格的文件。但是-print0加上後,-name選項顯然沒有按照我的預期解釋。

-name "* *" 

更妙的是某種方式來指定任何空白,而不僅僅是空間。理想情況下,這可以在查找中完成,而不是採用perl正則表達式進行「下游」處理。 最終,我想將文件名傳遞給一個腳本,該腳本將用我指定的某個字符替換空格。

回答

1

訂單事宜。因爲-print行動而來的-name過濾器之前這將打印的每一個名字:

find . -print -name "foo" 

這將只打印那些名爲foo,因爲動作來過濾後:

find . -name "foo" -print 
+0

有沒有一種辦法指定包含「病態」空白的文件名,例如製表符和返回值,例如由「touch foo $'\ r'bar」 –

+0

'-name'* [[:space:]] *''創建的文件 –