Как сказано в вопросе 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
Отходя от комментария @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 {} +
Попробуйте это,
Чтобы получить список файлов, отличных от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