특정 유형의 파일을 제외한 폴더 지우기

특정 유형의 파일을 제외한 폴더 지우기

다음과 같은 폴더 트리가 있습니다.

parent folder
....folder A
....folder B
    ....folder 1
    ....folder 2
....folder C
    ....folder 1
    ....folder 2
....folder D
    ....folder 1
    ....folder 2
. 
.

각 폴더에는 몇 가지 파일이 있습니다. 이러한 파일은 다양한 확장자를 갖습니다(zip, tar.gz, jpeg, bmp, csv, xlsx, doc, txt... 등).

  1. *.jpeg 파일을 제외한 폴더의 모든 파일을 삭제하는 방법.

  2. 여러 유형의 파일(예: *.jpeg, *.csv 파일 제외)을 제외한 폴더의 모든 파일을 삭제하는 방법

이를 달성하기 위해 다음 명령을 사용할 생각입니다.

find . type -f -exec  

그러나 그것을 달성하는 방법을 모른다! ...

다른 방법이 있나요?

답변1

find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete

다음과 같이 읽으세요. 현재 디렉터리를 탐색하고, 일반 파일이고 이름이 일치하지 않으면 *.jpeg삭제 *.csv하세요.

귀하의 버전 find에 해당 기능이 없으면 replate by 명령 을 -delete호출하십시오 .findrm-delete-exec rm {} +

zsh( setopt extended_globopen) 에서는 *~(PATTERN)일치하지 않는 모든 파일과 일치합니다 PATTERN. 사용글로벌 예선 D도트 파일과 .일반 파일만 포함합니다. 제외 패턴과 일치하는 항목을 제외하고 디렉터리가 아닌 모든 항목을 제거 .하도록 변경합니다 .^/

rm **/*~*.(jpeg|csv)(D.)

관련 정보