rm 명령을 사용하여 모든 .swp 파일 삭제

rm 명령을 사용하여 모든 .swp 파일 삭제

.swp현재 디렉토리의 모든 파일을 찾아서 삭제하려고 합니다 . 다음 명령을 사용하고 있습니다.

rm -i `find . | grep .swp$`

하지만 매번 다음과 같은 오류가 발생합니다.

rm: missing operand
Try `rm --help' for more information.

내가 뭐 잘못 했어요?

답변1

나타나는 오류 메시지는 이름 패턴과 일치하는 파일이 없음을 나타낼 수 있습니다 .swp$. 작성한 내용을 수행하는 일반적으로 더 안전한 방법(모든 파일 이름을 처리하므로):

find . -name '*.swp' -print0 | xargs -0 rm -i --

위의 코드 조각에서는 null 문자가 있는 레코드를 구분하기 위해 -print0이를 사용했습니다 find. 기본값은 불행히도 파일 이름에서는 작동하지 않는 개행 문자입니다. 를 사용하면 -print0이 명령은 줄 바꿈이 포함된 파일 이름을 포함하여 모든 파일 이름에서 작동합니다. 마찬가지로 xargs -0해당 입력은 널로 구분된 레코드로 처리됩니다.

답변2

또는 단독으로 사용되는 변형입니다 find. 예를 들면 다음과 같습니다.

find . -name "*.swp" -ok rm {} +

아니면 확인하지 않은 경우도 있습니다(경고!).

find . -name "*.swp" -delete

답변3

작업을 완료하려면 항상 가장 간단한 도구를 사용하십시오. 현재 디렉터리에서만 작업하려고 하므로 다음 명령이 제대로 작동합니다.

rm -i *.swp

답변4

.swp때로는 스왑 파일에 확장자 이상의 기능이 있는 경우도 있습니다 . saw, , 등 swb의 확장자를 가질 수도 있습니다 .swp

sushil@batpod:/app/DDB# ls -a
.gui.py.swo
gui.py
.serializers.py.swp
serializers.py
.tcinfo.py.swm
tcinfo.py
.views.py.swb
views.py

등...

거의 모든 확장자를 가진 스왑 파일을 제거할 수 있는 명령을 만들었습니다.sw*

주문하다:

find . -name '*.sw\*' | xargs -i rm {}

노트: 위 명령을 실행하기 전, 먼저 해당 명령으로 삭제할 파일을 살펴보고,

find . -name '*.sw\*'

중요한 파일을 삭제하지 마시길 바랍니다.

관련 정보