"~" 또는 "pyc"로 끝나는 모든 파일(현재 디렉터리 및 모든 하위 디렉터리에서)을 찾고 싶습니다. 이를 위해 다음 find
패턴을 시도했습니다.
find . -name '*{~,pyc}'
find . -name '{*~,*.pyc}'
그러나 둘 다 디렉터리에 있는 파일을 나열하지 않습니다. 왜 이 모드가 작동하지 않나요? 옳은 일은 무엇입니까?
ls
대신 (따옴표 없이 ) 사용하면 find
예상된 결과를 얻습니다.ls
현재의모든 하위 디렉터리 대신 디렉터리).
답변1
find . -type f \( -name "*~" -o -name "*pyc" \)
-type f
그러면 () 또는 ()로 끝나는 모든 파일이 반환됩니다 .~
-o
pyc
답변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 \)