Shell 에서 일부 파일 을 제외 한 모든 파일 을 삭제 하 는 3 가지 방법

1169 단어
나의 한 동료 가 나 에 게 이런 질문 을 한 적 이 있다. 리 눅 스에 서 디 렉 터 리 에 있 는 일부 파일 을 제외 한 모든 파일 을 어떻게 삭제 합 니까?당시 나 는 그 에 게 패턴 에 맞 는 방법 으로 해결 할 수 있다 고 말 했다.그러나 그 밖 에 다른 방법 도 있다. 바로 '모든 큰길 이 로마 로 통한다' 는 것 이다.하나씩 봅 시다.
~/Downloads 디 렉 터 리 에서 *. iso 와 *. zip 를 제외 한 모든 파일 을 삭제 하려 면 bash 에서 다음 과 같은 방법 으로 처리 할 수 있 습 니 다.
방법 1: 패턴 매 칭
 
  
shopt -s extglob # extglob
cd ~/Downloads
rm -v !(*.iso|*.zip)
!(pattern list) pattern list 。

방법 2: 변수 설정 법
bash 에서 GLOBIGNORE 는 무시 할 패턴 일치 파일 을 설정 할 수 있 습 니 다. 여러 모드 는: 로 구 분 됩 니 다.
 
  
cd ~/Downloads
export GLOBIGNORE=*.zip:*.iso
rm -v *
unset GLOBIGNORE

방법 3: find 검색 법
find 를 잘 아 는 친 구 는 find 의 위력 이 매우 강하 다 는 것 을 알 고 있 을 것 이 므 로 이 를 이용 하면 이 문 제 를 해결 할 수 있다.
 
  
cd ~/Downloads
find . -type f -not \( -name '*.zip' -or -name '*.iso' \) -delete

그러나 rm 조작 은 매우 위험 하 다 는 것 을 알려 드 려 야 합 니 다. 기 예 를 과시 하지 마 세 요. 만약 당신 이 안심 하지 않 는 다 면 먼저 성실 하 게 하나씩 또는 분할 삭제 할 수도 있 고 사후에 찾 는 것 보다 훨씬 편리 합 니 다.

좋은 웹페이지 즐겨찾기