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
합니다. 이 옵션-print0
은find
개행 문자 대신 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’에 추가 할 수 있습니다 . 디렉토리 만있는 경우 위의 명령으로 노이즈를 제거 할 수 없습니다.