하나의 디렉터리를 제외한 모든 Vim 실행 취소 파일을 삭제합니다.

하나의 디렉터리를 제외한 모든 Vim 실행 취소 파일을 삭제합니다.

.un~내 파일 시스템에 수많은 Vim 실행 취소() 파일이 흩어져 있다는 것을 방금 깨달았습니다 . 하나의 디렉토리를 제외한 모든 파일을 삭제하고 싶습니다 ~/.tmp. 첫 번째 문제는 이러한 파일을 삭제하는 Unix 명령을 찾을 수 없다는 것입니다. 예를 들어 내 파일 이름은 다음과 같습니다.

.myfile.txt.un~

rm -f *.un,,,, 등을 시도했지만 이러한 파일을 삭제할 수 rm -f *.un\~있는 rm -f *.un*명령을 찾을 수 없는 것 같습니다. 이 파일을 어떻게 삭제할 수 있나요?

둘째, 내 모든 디렉터리에 액세스하고 해당 파일(디렉터리 제외)을 삭제할 수 있는 find 명령을 작성하고 싶습니다 ~/.tmp. 잘못될 경우에 대비하여 이 명령을 실행하는 것이 두렵습니다. 누구든지 이 작업을 수행하기 위한 find 명령을 구성하는 데 도움을 줄 수 있습니까? 당신의 도움에 미리 감사드립니다!

답변1

와일드카드 패턴이 생략되었기 때문에 이 명령은 작동하지 않습니다.파일 클릭(이름이 char 로 시작하는 파일 .) 패턴에 점이 명시적으로 나타나지 않는 한. 따라서 *.un~일치 yourfile.txt.un~하지만 일치하지 않지만 .myfile.txt.un~일치 .*.un~합니다 .myfile.txt.un~.

이것을 사용할 수 있어야 합니다 find(1)( find와일드카드 일치는 도트 파일을 특별히 처리하지 않습니다):

find / -name "*.un~" -not -path "~/.tmp/*" -delete

이는 일치하지 않는 /모든 파일을 검색하여 삭제하도록 find에 지시합니다. 끄면 목록만 출력되므로 잘못된 내용이 삭제되지는 않는지 확인하고 확인할 수 있습니다. 마운트한 다른 파일 시스템을 검색하지 못하도록 여기에 추가 할 수도 있습니다.*.un~~/.tmp-delete-mount

답변2

*도트 파일은 확장되지 않습니다. 예를 들어 다음과 같이 말해야 합니다.

rm ./.*.un~

다음 을 사용하면 find아마도 가장 쉬울 것입니다.

find -iname ".*.un~" ...

바꾸다:

find -iname "*.un~" ...

후자가 foo.un~잘 일치하기 때문입니다 .foo.un~.

예, 먼저 연습을 수행하여 올바른 일치 항목이 있는지 확인하세요.

관련 정보