수백 개의 파일이 포함된 많은 디렉토리가 있습니다.
각 디렉토리에는 my_file-01.jpg와 my_file-€01.jpg 쌍이 있습니다.
제목에 € 기호가 포함된 모든 파일을 제거하고 싶습니다. 어떻게 해야 합니까?
답변1
find
수행한 작업:
find . -iname "*€*" -delete
이름이 일치하는 모든 파일을 삭제하세요"EUR", 조심하세요. find는 하위 디렉토리로도 이동합니다. 이를 원하지 않으면 find 매개변수를 약간 조정해야 합니다.
답변2
비슷한 것
find -name '*€*' -delete
올바른 파일이 삭제되는지 확인하기 위해 먼저 이것을 시도해 볼 수 있습니다.
find -name '*€*' -ls
답변3
각 예에서 첫 번째 명령은 이름에 a가 포함된 파일을 나열 €
하고 두 번째 명령은 해당 파일을 삭제합니다.
GNU find 사용(Linux에 있음):
find -name '*€*' -ls
find -name '*€*' -delete
디렉터리가 아닌 일반 파일만 일치시키려면 -type f
나중에 추가하십시오.-name '*€*'
POSIX 기능에만 의존하여 find를 사용하십시오.
find . -name '*€*' -print
find . -name '*€*' -exec rm {} +
디렉터리가 아닌 일반 파일만 일치시키려면 -type f
나중에 추가하십시오.-name '*€*'
bash 4 또는 zsh 사용:
echo **/*€*
rm **/*€*
zsh에서만 **/*€*(.)
디렉터리를 제외하고 일반 파일로 일치를 제한합니다.
€
이름에 포함된 파일 만 나열하고 동일한 파일이 존재하지 않는 경우 €
표준 find 및 zsh 솔루션이 있습니다.
find . -name '*€*' -type f -exec sh -c 'cmp -s -- "$0" "$(printf "%s" "$0" | tr -d "€")"' {} \; -print
find . -name '*€*' -type f -exec bash -c 'cmp -s -- "$0" "${0//€/}")"' {} \; -print
echo **/*€*(.e\''cmp -s -- $REPLY ${REPLY//€/}'\')