拡張子がjpg、jpeg、pngのファイルを取得するためにbashでforループを作成しようとしていますが、これは私の試みですが、機能しません
for file in "${arg}"/*.{jpg,jpeg,png}; do echo ${arg}-something.jpg > z.txt ; done;
基本的に、現在のフォルダー内のそれらの拡張子を持つファイルの名前を取得し、各ファイルで何かを実行してから、新しい拡張子でファイル名を出力します。
拡張子がjpg、jpeg、pngのファイルを取得するためにbashでforループを作成しようとしていますが、これは私の試みですが、機能しません
for file in "${arg}"/*.{jpg,jpeg,png}; do echo ${arg}-something.jpg > z.txt ; done;
基本的に、現在のフォルダー内のそれらの拡張子を持つファイルの名前を取得し、各ファイルで何かを実行してから、新しい拡張子でファイル名を出力します。
$file
どこにも使用していません。試す
for file in "$arg"/*.{jpg,jpeg,png} ; do
echo "$file" > z.txt
done
提案されたソリューションに対する2つの改善を提案したいと思います。
A. "$ arg" /。{jpg、jpeg、png}のforファイルは、jpeg拡張子を持つファイルがなく、スクリプトでエラーが発生する場合、 "$ arg"/.jpegも生成します。
$ echo *.{jpg,jpeg,png}
myPhoto.jpg *.jpeg *.png
これを回避するには、forループの直前で、nullglobを設定してリストからnullグロブを削除します。
$ shopt -s nullglob # Sets nullglob
$ echo *.{jpg,jpeg,png}
myPhoto.jpg
$ shopt -u nullglob # Unsets nullglob
B. * .png、*。PNG、または* .PnGも検索する場合(つまり、大文字と小文字を区別しない場合)、nocaseglobを設定する必要があります。
$ shopt -s nullglob # Sets nullglob
$ shopt -s nocaseglob # Sets nocaseglob
$ echo *.{jpg,jpeg,png}
myPhoto.jpg myPhoto.PnG
$ shopt -u nocaseglob # Unsets nocaseglob
$ shopt -u nullglob # Unsets nullglob