在下面/var/日志/配置单元我们有很多日志文件
我们要删除所有文件,排除以下不应删除的文件
hivemetastore.log
hiveserver2-report.json.tmp
hivemetastore-report.json.tmp
答案1
正如Kamaraj提到的问题153862中所述,使用find。只需使用以下多个条目! -name
:
$ ls
hivemetastore.log hivemetastore-report.json.tmp hiveserver2-report.json.tmp 1 2 3 4
$ find . ! -name 'hivemetastore.log' ! -name 'hivemetastore-report.json.tmp' ! -name 'hiveserver2-report.json.tmp' -type f -exec rm -f {} +
$ ls
hivemetastore.log hivemetastore-report.json.tmp hiveserver2-report.json.tmp
答案2
尝试这个,
要获取除以下文件之外的文件列表hivemetastore.log ,hiveserver2-report.json.tmp, hivemetastore-report.json.tmp
:
find /var/log/hive -type f ! -name "hivemetastore.log" ! -name "hiveserver2-report.json.tmp" ! -name "hivemetastore-report.json.tmp" -print
删除并获取已删除文件的列表:
find /var/log/hive -type f ! -name "hivemetastore.log" ! -name "hiveserver2-report.json.tmp" ! -name "hivemetastore-report.json.tmp" -delete -print
答案3
离开 @Kamaraj 的评论 - 您可以使用find
该开关查找多个文件-o
,然后否定它并用于-exec
其余rm
文件。
列出除以下名称的文件之外的所有文件:
find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \)
将 an 链接exec
到rm
这些文件:
find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \) -exec rm -f {} +