2013-05-12 51 views
0

我看到這個命令了很長時間的工作:查找在Solaris 9命令停止工作

find $dir -name $basename.[0-2][0-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-3][0-3][0-3] -exec rm -f {} \; 

突然,它停止工作。

我試圖把單引號'放在文件名之間,它可以工作幾天。然後我用雙引號",它現在再次工作。

由於我沒有在系統或帳戶中發現任何更改(都使用ksh),請您給出一個合理的理由讓這個停止工作沒有明顯的原因?

+1

文件名中是否有空格? – FDinoff 2013-05-12 00:51:42

回答

2

圍繞括號擴展的變量和單引號應該有雙引號。前者是爲了保護文件名中的空格,製表符和換行符。後者是爲了延遲括號表達式的擴展,以便find代替shell。您也許需要在花括號周圍加雙引號才能保護空白空間。

find "$dir" -name "$basename".'[0-2][0-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-3][0-3][0-3]' -exec rm -f "{}" \; 

它不工作的原因很可能是一個文件中的當前目錄(不一定$dir)相匹配的括號表達式並使其過早膨脹存在。

如果上述不起作用,請在沒有大括號的引號的情況下嘗試。