모든 하위 디렉토리에서 일치하는 파일 삭제 Linux의 모든 하위 디렉토리에서

Linux의 모든 하위 디렉토리에서 .swp 파일을 모두 제거하려면 어떻게해야합니까?



답변

현재 디렉토리 아래의 모든 * .swp 파일을 제거 find하고 다음 형식 중 하나의 명령을 사용하십시오 .

  • find . -name \*.swp -type f -delete

    -delete옵션은 직접 일치하는 파일을 삭제합니다 찾을 것을 의미합니다. 이것은 OP의 실제 질문과 가장 일치합니다.

    사용하여 -type f파일 만 처리 할 찾을 방법을.

  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    옵션을 -exec사용하면 파일마다 임의의 명령을 실행할 수 있습니다. 첫 번째 변형은 파일 당 한 번 명령을 실행하고 두 번째 변형은 가능한 한 {}많은 매개 변수로 대체 하여 가능한 적은 명령을 실행 합니다.

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    출력을 파이핑하는 방법 xargs은보다 복잡한 파일 별 명령을 사용 -exec합니다. 이 옵션 -print0find개행 문자 대신 ASCII NULL과 일치하는 항목을 구분하고 NULL로 구분 된 입력을 예상하도록 -0지시 xargs합니다. 이렇게하면 공백이 포함 된 파일 이름에 파이프 구성이 안전 해집니다.

자세한 man find내용과 예를 참조하십시오.


답변

find . -name '*.swp' -delete

삭제 자체를 수행하면 파일 이름에 포함 된 공간에 대한 위험을 제거 할 수 있습니다. 추가 보안을 -type f위해 파일 만 추가하는 것도 고려 하십시오.


답변

find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;

배쉬 4.0

shopt -s globstar
rm -f /path/**/*.swp

답변

내 홈 디렉토리에서 검색하고 GNU ‘find’및 ‘xargs’를 사용하려면 다음을 사용하십시오.

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

-print0‘및 ‘ -0‘를 사용하면 이름이 ASCII NUL ‘\ 0’문자로 구분되며 이름에 공백 등이있는 파일 경로를 처리합니다. ‘.swp’로 끝나는 디렉토리 아래에 디렉토리 (또는 장치 파일 또는 FIFO 또는 기타 비 파일)가 있다고 생각되면 ‘ -type f‘옵션을 ‘find’에 추가 할 수 있습니다 . 디렉토리 만있는 경우 위의 명령으로 노이즈를 제거 할 수 없습니다.