파일 이름에 하이픈이 포함된 디렉터리의 파일 삭제

파일 이름에 하이픈이 포함된 디렉터리의 파일 삭제

내 macOS 시스템에는 7,000개가 넘는 이미지가 있는 폴더가 있는데 파일 이름에 하이픈이 포함된 이미지를 제거해야 합니다. 디렉터리를 입력한 후 다음 명령을 시도 했지만 cd응답이 없습니다(터미널을 처음 사용하는 경우입니다).

rm -rf -- -
$ rm ./-
find . -type f -regex '/-/' -exec rm {} \;
find . -name '-*' | xargs rm
find . -regex '/-/' -print0 | xargs -0 rm

답변1

이 패턴은 *-*현재 디렉터리의 모든 이름과 일치합니다.대시 포함-(문자 그대로 " 다른 문자열이 접두사 및/또는 접미사가 붙을 수 있는 하나 이상의 을 포함하는 이름 "). 이것은 당신이 할 수 있어야한다는 것을 의미합니다

rm ./*-*

또는

rm -- *-*

-현재 디렉터리에서 이름에 문자가 포함된 모든 파일을 삭제합니다 .

zsh셸 에서 *-*(.)as 모드를 사용하면 일치 항목이 일반 파일로만 제한됩니다(디렉토리는 아니지만 rm디렉터리는 삭제할 수 없음).

rm한 번에 처리 하기에는 파일이 너무 많으면 find다음과 같이 사용하세요.

find . -maxdepth 1 -type f -name '*-*' -delete

-maxdepth 1검색을 현재 디렉토리로만 제한하고 일반 파일만 삭제하도록 추가 했습니다 -type f.

(다소 느린) 루프를 사용할 수도 있습니다.

for name in ./*-*; do
    rm "$name"
done

어떤 사람들은 "한 줄짜리"를 선호하며 이 루프는 다음과 같이 작성할 수 있습니다.

for name in ./*-*; do rm "$name"; done

...대부분의 최신 쉘에서는 여러 줄 명령으로 입력하는 것이 확실히 가능합니다.

관련 정보