파일 이름에 하이픈이 있는 디렉터리의 파일 삭제

파일 이름에 하이픈이 있는 디렉터리의 파일 삭제

내 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사용하면 일치 항목이 일반 파일로만 제한됩니다(디렉토리는 제외되지만 어쨌든 디렉터리를 삭제할 수는 없습니다).*-*(.)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

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

관련 정보