Linux 명령을 사용하여 물결표로 표시된 원치 않는 파일을 삭제하는 방법은 무엇입니까?

Linux 명령을 사용하여 물결표로 표시된 원치 않는 파일을 삭제하는 방법은 무엇입니까?

여기에서는 내 디렉터리와 하위 디렉터리에서 모든 물결표 파일을 제거하고 싶습니다. 여기서 리눅스 명령을 사용하는 방법은 무엇입니까?

트리 구조:

.
|-- Block_Physical_design_checklist
|   |-- Block_Physical_design_checklist.config
|   |-- Block_Physical_design_checklist.html
|   |-- Block_Physical_design_checklist.html~
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- CAD_checklist
|   |-- CAD_checklist.config
|   |-- CAD_checklist.html
|   |-- CAD_checklist.html~
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- Formality_DCT_Vs_ICC
|   |-- Formality_DCT_Vs_ICC.config
|   |-- Formality_DCT_Vs_ICC.html
|   |-- Formality_DCT_Vs_ICC.html~
|   `-- rev6
|       |-- rev6.config
|       |-- rev6.html
|       `-- rev6.html~

예상되는 트리 구조:

.
|-- Block_Physical_design_checklist
|   |-- Block_Physical_design_checklist.config
|   |-- Block_Physical_design_checklist.html
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- CAD_checklist
|   |-- CAD_checklist.config
|   |-- CAD_checklist.html
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- Formality_DCT_Vs_ICC
|   |-- Formality_DCT_Vs_ICC.config
|   |-- Formality_DCT_Vs_ICC.html
|   `-- rev6
|       |-- rev6.config
|       |-- rev6.html

답변1

귀하의 접근 방식에는 find . -type f -name '*~' -exec rm -f '{}' \;개선이 필요한 몇 가지 문제/범위가 있습니다 .

  • -name '*~';로 끝나는 파일 만 일치시킵니다 . 다음 ~을 포함하는 모든 파일을 일치시키려면 다음 ~을 사용하십시오.*~*

  • -exec rm -f '{}' \;각 파일에 대해 생성하는 rm것은 서투르고 비효율적입니다. 대신 여러 파일을 인수로 전달할 수 있으므로 인수 사용을 트리거하지 않고도 한 번에 원하는 만큼 많은 파일을 얻을 rm수 있습니다.find ... -execARG_MAX+-exec

이 두 가지를 합치면 다음과 같습니다.

find . -type f -name '*~*' -exec rm -f {} +

GNU가 있는 경우 find다음을 사용할 수 있습니다 -delete.

find . -type f -name '*~*' -delete

에서는 zsh다음과 같이 반복적인 패턴 일치 및 삭제를 한 번에 수행할 수 있습니다.

rm -f -- **/*~*(.)

glob 수정자는 .일반 파일에만 일치합니다.

답변2

이것이 내 대답이다.

find . -type f -name '*~' -exec rm -f '{}' \;

답변3

Bash를 사용하는 옵션 globstar:

shopt -s globstar ; rm ./**/*~

globstar선행 문자를 포함할 수 있는 파일 이름과 관련된 문제를 방지 **하면서 재귀 와일드카드에 를 사용할 수 있으며 물결표로 끝나는 파일 이름과 일치합니다../-*~

관련 정보