2013-03-01 147 views
1

我正在運行一個模擬,導致大量的文件。這些文件被命名爲:a-*000.dat, a-*100.dat.....a-*500.dat....a-*900.dat,其中*是兩位數字。我想保留a- * 000和a- * 500,並刪除其他所有內容。 我試過rm a-*{100,200,300,400,600,700,800,900},它工作。但是我必須爲*的每個值運行這個。你能建議一個shell腳本,這樣我可以避免多次運行rm。 PS:希望這個問題明確,客觀,具體。在刪除/標記此問題之前,請考慮給出具體的反饋意見。Shell腳本刪除一組文件

MADHUKAR

回答

0

我認爲你可以做到這一點:

rm a-*[1-4,6-9]00.dat 

關於你的嘗試:rm a-*{100,200,300,400,600,700,800,900}.dat,我不明白爲什麼你需要運行它爲前綴的每一個值。它應該工作得很好,如果你直接輸入 - 與*就位,這相當於我上面的建議(只有一點點)。請注意,如果您真的需要多次執行rm,可以通過在腳本中使用for循環來自動執行此操作。

+0

謝謝。我應該想到它! – user2122377 2013-03-01 06:49:59

0
find -regextype posix-basic -regex './a-[0-9]\{3\}00.dat' -not -regex './a-*[0,5]\{1\}00.dat' - exec rm -i {} \; 

看起來醜陋,但在基本正則表達式不足時可擴展。