아래에/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 {} +