拡張子は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/

関連情報