下に/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' \)
次のファイルexec
へのリンク:rm
find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \) -exec rm -f {} +