~ 및 pyc로 끝나는 파일을 찾는 방법은 무엇입니까? [복사]

~ 및 pyc로 끝나는 파일을 찾는 방법은 무엇입니까? [복사]

"~" 또는 "pyc"로 끝나는 모든 파일(현재 디렉터리 및 모든 하위 디렉터리에서)을 찾고 싶습니다. 이를 위해 다음 find패턴을 시도했습니다.

find . -name '*{~,pyc}'
find . -name '{*~,*.pyc}'

그러나 둘 다 디렉터리에 있는 파일을 나열하지 않습니다. 왜 이 모드가 작동하지 않나요? 옳은 일은 무엇입니까?

ls대신 (따옴표 없이 ) 사용하면 find예상된 결과를 얻습니다.ls현재의모든 하위 디렉터리 대신 디렉터리).

답변1

find . -type f \( -name "*~" -o -name "*pyc" \)

-type f그러면 () 또는 ()로 끝나는 모든 파일이 반환됩니다 .~-opyc

답변2

GNU find가 있다면 정규식을 사용하는 것이 훨씬 쉽습니다.

find . -regextype posix-egrep -regex '.*(~|pyc)$'

추신 : 쉘 확장 및 찾기를 사용하고 있다고 생각하십니까? 그렇다면 가능하지 않은 경우 대신 사용하십시오 find . -name '*.pyc' -o -name '*~'.

답변3

압축을 원한다면 다음을 사용하십시오 zsh.

printf '%s\n' **/*(~|pyc)(.D)

( D도트 파일에서도 작동하며 .일반 파일에서만 작동합니다)

쉘 버팀대 확장을 사용하려면 다음을 수행해야 합니다.

eval 'find . -type f ! \(' '! -name \*'{~,pyc} '\)'

쉘은 다음으로 확장됩니다:

eval 'find . -type f ! \(' '! -name \*~' '! -name \*pyc' '\)'

그런 다음 쉘은 다음 명령줄을 평가하도록 요청받습니다.

find . -type f ! \( ! -name \*~ ! -name \*pyc \)

관련 정보