특정 파일을 제외한 모든 파일을 삭제하는 방법 [중복]

특정 파일을 제외한 모든 파일을 삭제하는 방법 [중복]

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

관련 정보