我有一个目录:
我需要找到并删除除"_.7z"之外的所有文件" .7z"
我使用find/backups/-name"*.7z"-type f -mtime +180 -delete
我怎么能这样做?
che*_*ner 17
另一种方法是使用额外的,否定的主要find:
find /backups/ -name "*.7z" ! -name '_.7z' -type f -mtime +180 -delete
Run Code Online (Sandbox Code Playgroud)
其他答案中的简单正则表达式更适合您的用例,但这证明了使用!可用运算符的更通用方法find.
shx*_*hx2 10
在正则表达式中,^运算符表示"除"之外的任何字符".因此[^_]意思是"除_之外的任何字符".例如:
"[^_]*.7z"
Run Code Online (Sandbox Code Playgroud)
所以,如果你的目的是要排除的文件开始使用_,您的完整的命令行应该是:
find /backups/ -name "[^_]*.7z" -type f -mtime +180 -delete
Run Code Online (Sandbox Code Playgroud)
如果你想排除任何一个 ocnce _,你可以使用and和not运算符find,如:
find . -name "*.7z" -and -not -name "*_*"
Run Code Online (Sandbox Code Playgroud)