Linux:使用一个特殊文件删除每个早于日期的文件

kal*_*ali 4 linux command-line file

我可以通过以下方式删除7天以上文件夹中的所有常规文件:

find /path/to/dir -type f -mtime +7 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

有一个问题.这里有一个文件(.gitignore)我想保留.我尝试使用正则表达式,但显然findutils正则表达式不支持负向前瞻(?!gitignore)

还有其他想法吗?

gre*_*eke 5

使用 ! -name .gitignore

find /path/to/dir ! -name .gitignore -type f -mtime +7 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

您可以在转义括号内对多个参数进行分组.例如,删除除.gitignorejavascript文件以外的所有文件(以.js):结尾:

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

-o 手段 or