확장자가 , 등인 모든 파일을 나열하는 다음 명령이 doc
있습니다 docx
.
find . -maxdepth 1 -iname \*.doc\*
이 명령은 삭제하고 싶은 수많은 파일을 반환합니다. 예를 들어 반환된 결과는 다음과 같습니다.
- 예.docx
- 더미데이터.doc
- 샘플.doc
Sample.doc와 Dummydata.docx를 삭제하고 싶습니다. 옵션 을 사용하여 파일을 어떻게 삭제합니까 -exec
? 파일 이름을 전달할 수 있습니까? rm Dummydata.docx Sample.doc
예를 들어 명령은 다음과 같습니다.
find . -maxdepth 1 -iname \*.doc\* -exec rm Dummydata.docx Sample.doc
{} after
rm` 내에서 파일 이름을 전달할 수 있나요 ? 예를 들어
find . -maxdepth 1 -iname \*.doc\* -exec rm {Dummydata.docx} Sample.doc
더 좋은 방법이 있나요?
답변1
파일 이름을 미리 알고 있다면 즉시 제거하는 것이 더 쉬울 것입니다.
find . -iname "Dummydata.doc" -delete
또는 여러 조건이 있는 경우:
find . \( -iname "Dummydata.doc" -o -iname "Sample.doc" \)
괄호는 기본 설정을 강요하지만 일반적으로 괄호는 쉘에 특별한 의미를 갖기 때문에 이스케이프하거나 인용해야 합니다.
그렇지 않고 결과 목록을 먼저 검사하려면 찾은 파일의 경로(여기에 put into {}
)를 에 전달할 수 있습니다 sh
. 명령 의 경우 sh
경로는 가 되며 $0
이를 제거하려는 파일 이름과 비교할 수 있습니다.
find . -maxdepth 1 -iname "*.doc" \
-exec sh -c 'if [ "$0" == "Dummydata.doc" ] || [ "$0" == "Sample.doc" ]; then echo rm "$0"; fi' {} \;
여기에서 echo
올바른 파일이 제거될 것이라고 확신하면 제거하세요. 하지만 파일을 수동으로 제거하는 것이 더 쉬울 것 같습니다.