![하나의 디렉터리를 제외한 모든 Vim 실행 취소 파일을 삭제합니다.](https://linux55.com/image/29266/%ED%95%98%EB%82%98%EC%9D%98%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EC%A0%9C%EC%99%B8%ED%95%9C%20%EB%AA%A8%EB%93%A0%20Vim%20%EC%8B%A4%ED%96%89%20%EC%B7%A8%EC%86%8C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
.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~
.
예, 먼저 연습을 수행하여 올바른 일치 항목이 있는지 확인하세요.