![확장자가 3자로 끝나지만 마지막 문자가 "g" 또는 "f"인 모든 파일을 이동하시겠습니까?](https://linux55.com/image/130619/%ED%99%95%EC%9E%A5%EC%9E%90%EA%B0%80%203%EC%9E%90%EB%A1%9C%20%EB%81%9D%EB%82%98%EC%A7%80%EB%A7%8C%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%22g%22%20%EB%98%90%EB%8A%94%20%22f%22%EC%9D%B8%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%B4%EB%8F%99%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
mv public_html/*.??[g,f] public_html/images/
그게 효과가 있을까요? .jpg, .png 및 .gif 확장자를 가진 모든 사진/이미지가 이동됩니다.
(저는 Linux를 설치하지 않았고 온라인 터미널을 사용했습니다. 불행하게도 문서에는 사진이 없습니다)
답변1
[g,f]
g
, ,
(쉼표) 또는 일치합니다 f
. 또는 [fg]
만 필요합니다 .f
g
이제 기술적으로 말하면.
mv public_html/*.??[gf] public_html/images/
이라는 이름의 파일 foo.x.f
도 이동되며, ?
이는 .
.
또한 일부 쉘은 패턴과 일치하는 파일이 없는 경우 bash
문자 그대로 이름이 지정된 파일을 이동할 수 있습니다 *.??[gf]
(Bourne Shell에서 발생한 버그가 다시 수정되었습니다.zsh
bash
)를 사용하여 이 문제를 해결할 수 있습니다 shopt -s failglob
.
따라서 f
or 로 끝나는 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 kshglob
or를 사용하십시오 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/