
"find" 명령을 사용하여 명령을 실행 중인 디렉터리에 있는 모든 하위 폴더에서 주어진 확장의 쓸모 없는 일부 채우기를 삭제합니다.
find -type f -name *.txt -delete
find -type f -name *.xml -delete
find -type f -name *.pdbqt -delete
find -type f -name *.txt -delete
이 4가지 명령을 하나로 결합하여 1개의 명령으로 4가지 유형의 채우기를 제거할 수 있습니까? *.dlg 확장자에 속하지 않는 모든 채우기를 제거하기 위해 find를 사용할 수도 있습니까?
답변1
인용되지 않은 *.txt
것은 나쁘다. 보다find
유틸리티는 와일드카드를 사용할 때 모든 파일을 출력하지 않습니다..
이 4가지 명령을 하나로 결합할 수 있나요?
예. 보다여러 find
명령을 하나로 결합.
find . \( -name '*.txt' -o -name '*.xml' -o -name '*.pdbqt' \) …
(네 번째 명령이 첫 번째 명령을 복제하고 동일한 패턴을 두 번 사용하는 것은 의미가 없기 때문에 3개의 패턴을 사용합니다.)
find
확장명 에 속하지 않는 모든 파일을 제거하기 위해 대안으로 사용할 수 있습니까*.dlg
?
예(그리고 전체 파일이 아닌 일반 파일을 원한다고 가정합니다.파일):
find . -type f ! -name '*.dlg' # -delete
위 명령이 실제로 삭제하려는 파일을 인쇄하는 경우 #
제거된 상태로 실행하십시오.
테스트 ! -name '*.dlg'
가 무효화되었습니다 -name '*.dlg'
. -name '*.dlg'
실패할 경우에만 성공합니다 .
-delete
당신은 질문에 사용했으므로 find
분명히 그것을 지지합니다. 덜 강력한 사용자는 find
다음을 참조하십시오.find
: -exec rm {} \;
vs. -delete
- 전자가 널리 권장되는 이유는 무엇입니까?
귀하의 경우에는 다음 find
과 같이 작동합니다 find .
. 일부 구현에서는 명령줄에 하나 이상의 경로가 필요하기 find .
때문에 명시적으로 사용했습니다 .find