.py
및 파일이 발생할 때마다 .pyc
디렉터리(및 하위 디렉터리)를 정리 하고 싶습니다 . 나는 다음을 시도했다
find . -name '*pyc' -o -name '*py~' -exec rm -f {} \;
모든 파일이 누락되었습니다 pyc
. 할 때
find . -name '*pyc' -o -name '*py~'
pyc
이 명령은 삭제되지 않은 파일을 찾습니다 . 어떤 통찰력이 있습니까?
답변1
와일드카드 패턴을 사용 하는 대신 와일드카드 패턴을 사용하면 안 되는 이유는 무엇입니까 -o
?
find . -name '*py[c~]' -delete
또는:
find . -name '*py[c~]' -exec rm -f {} +
답변2
연산자 -a
(두 조건자 사이에 암시적)가 우선하므로 -o
괄호가 필요합니다.
find . \( -name '*pyc' -o -name '*py~' \) -a -exec rm -f {} +
(위의 내용은 데모 목적으로만 포함시켰으며 -a
암시적이므로 필요하지 않습니다.) 피할 수 있다면 각 파일마다 하나씩 실행할 필요가 없기 ;
때문에 교체했습니다 .+
rm
답변3
bash 4+를 사용하는 경우 globstar가 재귀 와일드카드를 제공하므로 find가 필요하지 않습니다.
shopt -s globstar
for f in ./**/*.py{c,~}; do rm "$f"; done
이는 shopt
a로 구분되지 않고 자체 라인에 있어야 합니다 ;
(가능한 경우 스크립트 맨 위, shebang 바로 아래에서 사용해야 합니다).
답변4
나는 이 질문이 그다지 새로운 것이 아니라는 것을 알고 있습니다. 하지만 아마도 사용하기에 충분할 것입니다.
rm -f `find . -name '*.pyc' -o -name '*.py~' `