확장자가 3자로 끝나지만 마지막 문자가 "g" 또는 "f"인 모든 파일을 이동하시겠습니까?

확장자가 3자로 끝나지만 마지막 문자가 "g" 또는 "f"인 모든 파일을 이동하시겠습니까?
mv public_html/*.??[g,f] public_html/images/

그게 효과가 있을까요? .jpg, .png 및 .gif 확장자를 가진 모든 사진/이미지가 이동됩니다.

(저는 Linux를 설치하지 않았고 온라인 터미널을 사용했습니다. 불행하게도 문서에는 사진이 없습니다)

답변1

[g,f]g, ,(쉼표) 또는 일치합니다 f. 또는 [fg]만 필요합니다 .fg

이제 기술적으로 말하면.

mv public_html/*.??[gf] public_html/images/

이라는 이름의 파일 foo.x.f도 이동되며, ?이는 ..

또한 일부 쉘은 패턴과 일치하는 파일이 없는 경우 bash문자 그대로 이름이 지정된 파일을 이동할 수 있습니다 *.??[gf](Bourne Shell에서 발생한 버그가 다시 수정되었습니다.zshbash)를 사용하여 이 문제를 해결할 수 있습니다 shopt -s failglob.

따라서 for 로 끝나는 3자 확장자 의 경우 g더 많지만 여전히 마지막 경고가 있습니다( 일부 셸을 사용하는 [^.]대신 ).[!.]

mv public_html/*.[!.][!.][fg] public_html/images/

3인분편지:

mv public_html/*.[[:alpha:]][[:alpha:]][fg] public_html/images/

jpg, png 또는 gif의 경우 zsh쉘을 사용하십시오.

mv public_html/*.(jpg|gif|png) public_html/images/

또는 ksh 또는 zsh -o kshglobor를 사용하십시오 bash -O extglob.

mv public_html/*.@(jpg|gif|png) public_html/images/

답변2

가정 bash하거나 친구를 사용할 수 있습니다

mv public_html/*.??[gf] public_html/images/

또는 더 정확하게는 일치합니다.

mv public_html/*.{jpg,png,gif} public_html/images/

관련 정보