
rm 명령으로 지정된 형식의 모든 파일이 삭제되도록 다음 명령을 수정하려면 어떻게 해야 합니까?
#!/bin/bash
mogrify -verbose -format webp -quality 70 *.jpg *.jpeg *.JPEG *.JPG *.png *.PNG && rm --verbose *.jpg *.jpeg *.JPEG *.JPG *.png *.PNG
$SHELL
이 명령은 이미지를 webp로 성공적으로 변환하지만 rm은 원본 파일을 삭제하지 않습니다.
webp로 변환한 후 다음 오류가 발생합니다.
mogrify-im6.q16: unable to open image `*.jpeg': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.JPG': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.JPG': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.png': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.png': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.PNG': No such file or directory @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.PNG': No such file or directory @ error/blob.c/OpenBlob/2874.
답변1
bash
와일드카드 패턴을 사용하기 전에 이 옵션을 스크립트에 추가하세요.
shopt -s nullglob
이는 일치하지 않는 패턴을 리터럴로 두지 않고 제거하도록 쉘에 지시합니다. 따라서 귀하의 예에서는 *.png
별표(존재하지 않을 수 있음)로 시작하는 5자 파일 이름으로 유지되는 대신 제거됩니다.