*.{jpg,png}
このタイプのすべてのファイルを選択しないでください。
mv
このように連続ターゲットを受けることが可能であることを知っていますがmv *.png *.jpg folder/
、なぜ{}
ダメですか?
答え1
あなたは探しているかもしれません
shopt -s nullglob
答え2
中括弧拡張はファイル名のワイルドカードの一部ではなく、独自の機能であり、ワイルドカードが発生する前に機能します。
まず、中括弧拡張がsumに*.{jpg,png}
なります。次に、ファイル名グロービングを介して一致するファイル名に展開します。デフォルトでは、どのファイルとも一致しないglobパターンはそのまま残ります。したがって、これら2つは同じです。*.jpg
*.png
mv *.png *.jpg folder/
mv *.{png,jpg} folder/
ディレクトリ内の唯一のファイルがある場合、両方のfoo.png
コマンドbar.png
は次に展開されます。
mv foo.png bar.png *.jpg folder/
mv
存在しないファイルについて文句を言うかもしれません*.jpg
。
Bashを使用すると仮定すると、を使用して拡張globを有効にし、shopt -s extglob
拡張globを使用する必要があります*.(png|jpg)
。必要に応じて動作しますが、実際には2つではなく1つの汚れを作成します。または、shopt -s nullglob
一致しないグローブをそのままにする代わりに消えるように設定することもできます。
2つのタイプのうち1つ以上のファイルが存在する場合、結果は同じです。まったく存在しない場合は、無効になっている*.(png|jpg)
かのように残ります。nullglob
オンの場合、nullglob
これらのモードは完全に消え、コマンドはすぐにmv folder/
。エラーメッセージは混乱する可能性があります。