다음과 같은 폴더 트리가 있습니다.
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... 등).
*.jpeg 파일을 제외한 폴더의 모든 파일을 삭제하는 방법.
여러 유형의 파일(예: *.jpeg, *.csv 파일 제외)을 제외한 폴더의 모든 파일을 삭제하는 방법
이를 달성하기 위해 다음 명령을 사용할 생각입니다.
find . type -f -exec
그러나 그것을 달성하는 방법을 모른다! ...
다른 방법이 있나요?
답변1
find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete
다음과 같이 읽으세요. 현재 디렉터리를 탐색하고, 일반 파일이고 이름이 일치하지 않으면 *.jpeg
삭제 *.csv
하세요.
귀하의 버전 find
에 해당 기능이 없으면 replate by 명령 을 -delete
호출하십시오 .find
rm
-delete
-exec rm {} +
zsh( setopt extended_glob
open) 에서는 *~(PATTERN)
일치하지 않는 모든 파일과 일치합니다 PATTERN
. 사용글로벌 예선 D
도트 파일과 .
일반 파일만 포함합니다. 제외 패턴과 일치하는 항목을 제외하고 디렉터리가 아닌 모든 항목을 제거 .
하도록 변경합니다 .^/
rm **/*~*.(jpeg|csv)(D.)