特定のファイルを除くすべてのファイルを削除する方法[重複]

特定のファイルを除くすべてのファイルを削除する方法[重複]

下に/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に使用できます。-execrm

次の名前のファイルを除くすべてのファイルを一覧表示します。

find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \)

次のファイルexecへのリンク:rm

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

関連情報