スクリプトは、サブディレクトリを繰り返しながら、サブディレクトリ内のすべてのファイル名(FLA.*Image.*file.jpgおよびFLA.*Image.jpg)を一致させて処理する必要があります。また、結果を保存するためにサブディレクトリに出力フォルダを作成します。ただし、スクリプトはワイルドカード文字を認識しません。
#!/bin/zsh
app="myapp" #my app exe location
for f in **/** ; do
if [ -d $f ]; then
m=$f/"FLA.*Image.*file.jpg" # match filename to process
base_o="$f/output"
if [[ ! $f =~ "output_.*" ]]; then
(
for file in $f/*.jpg ; do
o="${base_o}_${file:t:r:u}"
o=${o%-*}
if [ $f != $o ] && [ $file != $m ] &&
[[ ${file:t} =~ "FLA.*Image.jpg" ]]; then
echo "*** Processing the folder $f ***"
if [ ! -d $o ]; then mkdir $o; fi
$app ${file} ${o} ${m}
fi
done
)
fi
fi
done
return 0
答え1
"FLA.*Image.*file.jpg"
文字通り FLA.*Image.*file.jpg
ZSHによって拡張されません。
"
このように括弧を削除して追加すると
m=($f/FLA.*Image.*file.jpg)
ワイルドカードが機能するはずです。
m
配列になるように、ワイルドカードパターンを括弧で明示的に囲む必要があります。それ以外の場合はm
文字列になり、ワイルドカードは完了しません。
答え2
m=($f/FLA.*Image.*file.jpg)
削除されました。すべてが正常です
m=($f/FLA*Image*file.jpg)