내 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
... 대부분의 최신 쉘에서는 여러 줄 명령으로 입력하는 것이 확실히 가능합니다.