디렉토리에있는 파일 중 하나를 제외하고 모두 삭제하는 방법

Linux 파일 삭제

때때로 당신은 필요합니다 디렉토리에서 거의 모든 파일 제거,하지만 그중 하나 또는 일부를 유지하려고합니다. 숫자가 많을 때 하나씩 이동하는 것은 지루한 작업입니다. 최선의 선택은 아닙니다. Linux에서 작업을 훨씬 더 쉽게 만들고 필요한 모든 것을 한 번에 제거 할 수있는 방법이 있습니다.

예를 들어 특정 이름으로 시작하거나 특정 확장자가있는 항목 만 제거 할 수 있습니다. 가능한 모든 것사실 다른 경우에는 이미 LxA에서 유사한 튜토리얼을 보여주었습니다. 여기에서는 저장하려는 파일을 제외하고 원하는 모든 파일을 삭제할 수 있도록 튜토리얼을 단계별로 간단하게 수행 할 수 있습니다.

그리고 가장 좋은 점은 프로그램을 설치할 필요가 없습니다. rm 및 find와 같은 명령으로 쉽게 수행 할 수 있습니다. 즉, Linux 배포판에 이미 사전 설치된 프로그램입니다. 물론이 방법은 패턴을 찾고 원하는 항목 만 제거하기 위해 해당 일치 항목을 사용하는 방법을 기반으로합니다.

글쎄, 거기를 제거하기 위해 여러 대안, 그들은 무엇인가…

rm을 사용하여 디렉토리에서 파일 제거

음, 사용하려면 rm 명령 느낌을 없애려면 패턴을 식별하는 몇 가지 방법을 먼저 알아야합니다.

  • * (패턴 목록) -XNUMX 개 이상의 지정된 패턴 발생 일치
  • ? (패턴 목록) -지정된 패턴이 XNUMX 개 또는 XNUMX 개 일치합니다.
  • + (패턴 목록) -지정된 패턴의 하나 이상의 발생과 일치
  • @ (패턴 목록) -지정된 패턴 중 하나와 일치
  • ! (패턴 목록) -주어진 패턴 중 하나를 제외한 모든 항목과 일치

extglob 활성화 이를 사용하려면 먼저 다음 명령을 실행해야합니다.

<br data-mce-bogus="1">

shopt -s extglob<br data-mce-bogus="1">

눈! 지정하지는 않았지만 이러한 작업을 수행 할 수있는 권한이 있고 rm 명령을 실행할 때 해당 디렉토리에있는 것으로 가정합니다. 다른 경로에서 실행하면 원하지 않는 파일이 삭제 될 수 있으므로주의하십시오. 즉, 이러한 명령을 실행하기 전에 cd로 원하는 디렉토리를 입력했는지 확인하십시오.

이제 rm을 사용하여 원하는 것을 제거 할 수 있습니다. 예를 들면 이름과 일치하는 파일을 제외한 모든 파일을 디렉토리에서 제거합니다. «Lxa»:

rm -v !("lxa")

지정할 수도 있습니다. 삭제하지 않을 두 개 이상의 이름. 예를 들어, "lxa"및 "desdelinux"를 제거하지 않으려면 :

 rm -v !("lxa"|"desdelinux") 

모든 파일을 삭제할 수 있습니다. 확장자가있는 것 빼기 .mp3. 예를 들면 :

 rm -v !(*.mp3) 

끝으로 돌아가서 extglob 비활성화:

 shopt -u extglob 

찾기를 사용하여 디렉토리에서 파일 제거

rm의 또 다른 대안은 find를 사용하여 기분을 제거하십시오.. rm과 함께 pipe 및 xargs를 사용하거나 -delete 옵션을 사용하여 찾을 수 있습니다. 즉, 일반 구문은 다음과 같습니다.

find /directory/ -type f -not -name 'PATRÓN' -delete
find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}

예를 들어, 확장자를 가진 파일을 제외하고 디렉토리의 모든 파일을 삭제하십시오. .jpg, 둘 다 동일한 결과를 얻으므로 다음 두 명령 중 하나를 사용할 수 있습니다.

find . -type f -not -name '*.jpg'-delete

find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}

대신 원하는 경우 추가 패턴 추가, 당신도 할 수 있습니다. 예를 들어, 디렉토리에서 .pdf 또는 .odt를 제거하고 싶지 않다고 가정 해보십시오.

find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete

물론, | 이전 예제에서와 같이 xargs. 그건 그렇고, 우리는 -부정하지 말고 그러나이를 제거하여 긍정적으로 만들 수 있습니다. 즉, 일치하는 패턴을 제거하고 제외하지 않도록 할 수 있습니다.

GLOBIGNORE 변수를 사용하여 디렉토리에서 파일 삭제

마지막으로 또 다른 대안 찾고 rm을 찾고 제거하거나 제외하려는 파일을 가리키는 환경 변수를 사용하고 있습니다. 예를 들어 Downloads라는 디렉토리에있는 모든 파일을 삭제하고 .pdf, .mp3 및 .mp4 파일을 저장한다고 가정합니다. 이 경우 다음을 수행 할 수 있습니다.

cd Descargas
GLOBIGNORE=*.pdf:*.mp4:.*mp3
rm -v *
unset GLOBIGNORE


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.