*.swp
모든 vim 스왑 파일을 삭제 하고 확인을 통해 삭제하려고 합니다 . 명령 find
이 파일을 찾았지만 rm
옵션 No such file or directory
이 -i
. 파일 경로를 하드코딩하고 rm -i
.
아래를 참조하세요
(doors)hobbes3@hobbes3 ~/Sites $ find mysite mysite_BAK -name *.swp -exec 'rm -i {}' \;
find: rm -i mysite/templates/.base.html.swp: No such file or directory
find: rm -i mysite/templates/doors/orders/.create.html.swp: No such file or directory
find: rm -i mysite/templates/doors/orders/.detail.html.swp: No such file or directory
find: rm -i mysite/templates/doors/orders/.list.html.swp: No such file or directory
(doors)hobbes3@hobbes3 ~/Sites $ rm -i mysite/templates/.base.html.swp
remove mysite/templates/.base.html.swp? n
내 생각엔 내가 잘못된 선택을 한 것 같아 -exec
. 어떤 제안이 있으십니까? 미리 감사드립니다!
답변1
오류의 원인은 다음과 같습니다.찾다, 아니요RM.
'rm -i <file>'
그 이유는 단일 매개변수로 작성했기 때문입니다 . 이는 다음과 같이 다시 작성됩니다.
find mysite mysite_BAK -name '*.swp' -exec rm -i '{}' \;
따라서 find는 "-exec" 뒤에 여러 인수를 취하고 첫 번째 인수를 명령으로 처리하고 나머지 인수를 명령 인수로 처리합니다.
답변2
업데이트된 답변:
bash 버전 >4.0을 사용하는 경우 매우 간단한 globstar 함수를 사용할 수 있습니다.
shopt -s globstar
rm -i **/*.swp
이는 공백이 포함된 파일 이름에도 적용됩니다!
이 섹션 shopt -s globstar
에서는 bash에서 재귀 일치를 활성화합니다. **
몸에 붙이고 .bashrc
영원히 행복할 수 있습니다.
이전 답변:
나는 일반적으로 간단한 도구를 조합하여 사용하는 것이 더 쉽다고 생각합니다.
CD를 dir로 복사한 다음:
rm -i `find . | grep .swp$`
기억하기가 더 쉽습니다(성능이 문제가 되지 않는 경우)!
경고: 파일 이름에 공백이 포함되지 않은 경우에만 이 옵션을 사용하십시오.
답변3
이렇게 하면 나는 달려갈 것이다.
find mysite mysite_BAK -type f -name .\*.sw? -exec rm -i {} ";"
VIM의 스왑 파일은 .swp로만 끝나지 않습니다. .swp가 있으면 VIM은 .swo를 생성한 다음 .swn 등을 생성합니다. 또한 스왑 파일에는 .file1.rb.swp와 같이 점(.)이 앞에 붙습니다.
확인(-i) 없이 VIM 스왑 파일을 찾아 삭제하는 다른 방법:
find some_dir -type f -name .\*.sw? | xargs rm
find some_dir -type f -name .\*.sw? -exec rm {} ";"
find some_dir -type f -name .\*.sw? -delete # -delete option does not work in Git Bash
"-type f"가 없으면 디렉터리를 삭제할 때 오류가 발생합니다. 또한 \
in은 .\*.sw?
여러 플랫폼과 호환됩니다.