2012-09-25 24 views
0

我最近和Ubuntu一起工作,並且我被要求在開始時使用數字去除文件。用文件名開頭的數字去除文件

如何從當前目錄中刪除前三位數字的普通文件?

+0

沒有任何文章中,我可以檢查? – femchi

+0

您能(1)向我們顯示一個文件名列表,所以我們可以看到您正在處理的數據,(2)向我們展示了您想要轉換爲什麼的示例,(3)向我們展示了您的代碼寫的,試圖做到這一點,並(4)告訴我們你得到的錯誤或不正確的結果代碼? – ghoti

+0

@femchi當你使用像這樣的命令rm 132 *時會發生什麼? – gks

回答

5

既然誰也不屑於發佈此,

rm [0-9][0-9][0-9]* 
3

首先:試用這種刪除命令時要小心!嘗試在測試文件或備份良好的文件的目錄中運行。

你可以嘗試從外殼是這樣的:

find . -regex './[0-9]{3}.*' -exec 'rm {}' \; 

對於調試,試而不rm -command第一運行它,列出了將要刪除的文件:

find . -regex './[0-9]{3}.*' 

您可能必須擺脫大括號 - 至少我不得不在FreeBSD中使用zsh-shell:

find . -regex './[0-9]\{3\}.*' 
+0

謝謝你的回答。老實說,我沒有完全理解你寫的東西,因爲它看起來好像你更專業。我正在尋找更多的基本命令。 – femchi

+0

我找到了這個命令。 ls | egrep^[0-9] {3} 它列出了由3個數字開始的所有文件。我怎樣才能刪除它們? – femchi

1

如何像

ls | egrep '^[0-9]{3}' | xargs rm 

ls列出了所有文件,該egrep過濾列表,以便它只包含三個數字開頭的文件名,而xargs適用rm到每個filenamess的是egrep讓通過。

+2

這是對rm [0-9] [0-9] [0-9] *'的改進嗎?這將避免解析'ls'輸出(總是禁止),並正確處理所有文件名(即使嵌入換行符),也只涉及一個進程。 – tripleee