2014-01-21 33 views
4

我能夠刪除可以說,一個文件夾中的所有常規文件超過7天通過日期的:的Linux:刪除每個文件比一個特殊的文件

find /path/to/dir -type f -mtime +7 -exec rm {} \; 

與一個單一的問題。這裏有一個文件(.gitignore),我想保留它。我嘗試使用正則表達式,但顯然findutils正則表達式不支持負向lookahead (?!gitignore)

任何其他的想法?

回答

5

使用! -name .gitignore

find /path/to/dir ! -name .gitignore -type f -mtime +7 -exec rm {} \; 

您可以轉義的括號組內多個參數。例如,要刪除除.gitignore所有文件和JavaScript文件(.js)結尾:

find /path/to/dir ! \(-name ".gitignore" -o -name "*.js" \) -type f -mtime +7 -exec rm {} \; 

-o意味着or

+0

我認爲需要進行轉義,否則外殼可以嘗試以適應以前的「!」命令?即''!!'而不是'!'?(不知道如何:/) –

+0

* man找到*提到需要轉義'!',儘管我從來不需要這樣做。命令是這樣的嗎?* previous命令的shell命令是'!!' – grebneke

+0

好吧,對不起,我提到它(但現在不能測試它),以防萬一... –

相關問題