2012-10-29 55 views
0
138.096.000.015.00111-138.096.201.072.38717 
138.096.000.015.01008-138.096.201.072.00790 
138.096.201.072.00790-138.096.000.015.01008 
138.096.201.072.33853-173.194.020.147.00080 
138.096.201.072.34293-173.194.034.009.00080 
138.096.201.072.38717-138.096.000.015.00111 
138.096.201.072.41741-173.194.034.025.00080 
138.096.201.072.50612-173.194.034.007.00080 
173.194.020.147.00080-138.096.201.072.33853 
173.194.034.007.00080-138.096.201.072.50612 
173.194.034.009.00080-138.096.201.072.34293 
173.194.034.025.00080-138.096.201.072.41741 

我有我想刪除具有串「138.096.000」與外殼的正則表達式處理文件名

文件名的那些文件裏面其中有許多文件,文件名是像上面 很多文件夾有時我想獲得的文件與文件名字符串列表中的「00080」

回答

1

要刪除含有「138.096.000」名稱的文件:

find /root/of/files -type f -name '*138.096.000*' -exec rm {} \; 

要使用含有「00080」名稱列表文件:

find /root/of/files -type f -name '*00080*' 
0
rm $(find . -name \*138.096.000\*) 

此使用find命令來查找相應的文件。這在子shell內執行,輸出(文件列表)由rm使用。注意*模式的轉義,因爲shell會嘗試並自己擴展*

這是假設你沒有用空格等文件名您可能更願意做這樣的事情:

for i in $(find . -name \*138.096.000\*); do 
    rm $i 
done 

在這種情況下,甚至

find . -name \*138.096.000\* | xargs rm 

注意,在上面的循環您將爲每個文件執行rm,並且xargs變體將多次執行rm(取決於您擁有的文件數量 - 它只能執行一次)。

不過,如果你使用zsh那麼你可以簡單地做:

rm **/*138.096.000* 

(我假設你的目錄名稱不是喜歡你的文件,注意-f標誌在卡米爾的答案,如果使用。這種情況下)