2012-10-01 54 views
0

我有一些unix代碼來刪除一些文件,但其中一些文件的名稱中包含空格(一個或兩個)。所以迭代和刪除不起作用。有人能幫助我嗎? 代碼:通過迭代刪除具有空間名稱的文件

表示file_name在ls temp_for* | grep "temp_for_...\.lst"

if [ -f $file_name ] 
then 
    echo '$file_name' 
    rm "$file_name" 
fi 

文件: temp_for_ 1 .LST, temp_for_ SI.lst, temp_for_f S.lst

回答

2

使用read整行讀取:

ls ... | grep ... | while read i 
do rm "$i" 
done 

或者使用find

find . -name '...' -exec rm {} \; 

還是用找到xargs

find . -name '...' -print0 | xargs -0 rm 
+0

更好地使用'find',因爲文件名也可能包含換行符。 –

+0

沒有任何工作 – Sarbe97

0

如果換在單引號中的文件名,然後它會逃跑空格和特殊字符。您也可以使用反斜線來轉義空格和其他字符。

實施例1:

` '文件名用空格'

實施例2:

文件名\與\空間

0

$filename在引號中,像這樣:

if [ -f "$file_name" ]