해야 하는 상황에 놓이게 되는 경우가 있습니다. 디렉토리의 모든 파일을 삭제하거나 단순히 디렉토리를 정리하십시오. 특정 확장자로 끝나는 특정 유형의 파일을 제외한 모든 파일을 제거합니다.
이 기사에서는 다음을 사용하여 특정 파일 확장명 또는 유형을 제외한 디렉토리에서 파일을 삭제하는 방법을 보여줍니다. NS, 찾기 그리고 글로비노어 명령.
더 진행하기 전에 Linux의 중요한 개념 중 하나인 파일 이름 패턴 일치를 간단히 살펴보고 당면한 문제를 처리하는 것으로 시작하겠습니다.
추천 읽기:Linux에서 여러 파일 이름/확장자를 검색하려면 find 명령을 사용하십시오.
Linux에서 쉘 패턴은 다음과 같은 특수 문자로 구성된 문자열입니다. 와일드카드 또는 메타 문자:
*
– 0개 이상의 문자와 일치?
– 모든 단일 문자와 일치[순서]
– seq의 모든 문자와 일치[!seq]
– seq에 없는 모든 문자와 일치여기에서 탐색할 세 가지 가능한 방법이 있으며 여기에는 다음이 포함됩니다.
다양한 확장 패턴 일치 연산자가 아래에 나열되어 있습니다. 여기서 패턴 목록 하나 이상의 파일 이름을 포함하는 목록이며, |
캐릭터:
*(패턴 목록)
– 지정된 패턴의 0개 이상의 발생과 일치?(패턴 목록)
– 지정된 패턴의 0 또는 1번 발생과 일치@(패턴 목록)
– 지정된 패턴 중 하나와 일치!(패턴 목록)
– 주어진 패턴 중 하나를 제외한 모든 것과 일치그것들을 사용하려면 extglob 쉘 옵션은 다음과 같습니다.
# shopt -s extglob.
1. 파일 이름을 제외한 디렉토리의 모든 파일을 삭제하려면 아래 명령을 입력하십시오.
$ rm -v !("파일 이름")
2. 다음을 제외한 모든 파일을 삭제하려면 파일명1 그리고 파일명2:
$ rm -v !("파일 이름1"|"파일 이름2")
3. 아래 예는 모든 파일을 제외한 모든 파일을 제거하는 방법을 보여줍니다 .지퍼
대화식으로 파일:
$ rm -i !(*.zip)
4. 다음으로 모든 파일을 제외한 디렉토리의 모든 파일을 삭제할 수 있습니다. .지퍼
그리고 .odt
수행 중인 작업을 표시하는 동안 다음과 같이 파일을
$ rm -v !(*.zip|*.odt)
필요한 모든 명령이 있으면 전원을 끕니다. extglob 다음과 같은 쉘 옵션:
$ shopt -u extglob.
이 방법으로 우리는 find 명령만 사용 적절한 옵션과 함께 또는 xargs 아래 형식과 같이 파이프라인을 사용하여 명령을 실행합니다.
$ find /directory/ -type f -not -name 'PATTERN' -삭제. $ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {} $ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [옵션] {}
5. 다음 명령은 다음을 제외한 모든 파일을 삭제합니다. .gz
현재 디렉토리의 파일:
$ 찾기. -type f -not -name '*.gz'-삭제가 아닙니다.
6. 사용 관로 그리고 xargs, 위의 경우를 다음과 같이 수정할 수 있습니다.
$ 찾기. -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}
7. 한 가지 추가 예를 살펴보겠습니다. 아래 명령은 다음을 제외한 모든 파일을 지웁니다. .gz
, .odt
, 그리고 .jpg
현재 디렉토리의 파일:
$ 찾기. -type f -not \(-name '*gz' -또는 -name '*odt' -또는 -name '*.jpg' \) -delete.
그러나 이 마지막 접근 방식은 bash에서만 작동합니다. 여기서, 글로비뇨어 변수는 경로 이름 확장에서 무시할 콜론으로 구분된 패턴 목록(파일 이름)을 저장합니다.
추천 읽기:Linux의 Grep 명령에 대한 유용한 12가지 실제 예
이 방법을 사용하려면 정리하려는 디렉토리로 이동한 다음 글로비뇨어 다음과 같이 변수:
$cd 테스트. $ GLOBIGNORE=*.odt:*.iso:*.txt.
이 경우 이외의 모든 파일은 .odt
, .iso
, 그리고 .txt
현재 디렉토리에서 제거된 파일.
이제 명령을 실행하여 디렉터리를 정리합니다.
$ rm -v *
그 후, 끄기 글로비뇨어 변하기 쉬운:
$ 설정되지 않음 GLOBIGNORE.
메모: 위의 명령에 사용된 플래그의 의미를 이해하려면 다양한 그림에서 사용한 각 명령의 매뉴얼 페이지를 참조하십시오.
그게 다야! 같은 목적을 위해 염두에 두고 있는 다른 명령줄 기술이 있는 경우 아래 피드백 섹션을 통해 공유하는 것을 잊지 마십시오.