*.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
이는 공백이 포함된 파일 이름에도 적용됩니다!
이 부분은 bash에서 shopt -s globstar
재귀 매칭을 활성화합니다 . **
당신은 이것을 당신의 안에 넣고 .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?
하면 여러 플랫폼에서 호환됩니다.