如何删除所有文件排除特定文件

如何删除所有文件排除特定文件

在下面/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 链接execrm这些文件:

find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \) -exec rm -f {} +

相关内容