제목에 x가 포함된 모든 파일을 어떻게 삭제합니까?

제목에 x가 포함된 모든 파일을 어떻게 삭제합니까?

수백 개의 파일이 포함된 많은 디렉토리가 있습니다.

각 디렉토리에는 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//€/}'\')

관련 정보