ワイルドカードは引用符内では機能しません。

ワイルドカードは引用符内では機能しません。

スクリプトは、サブディレクトリを繰り返しながら、サブディレクトリ内のすべてのファイル名(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.jpgZSHによって拡張されません。

"このように括弧を削除して追加すると

m=($f/FLA.*Image.*file.jpg)

ワイルドカードが機能するはずです。

m配列になるように、ワイルドカードパターンを括弧で明示的に囲む必要があります。それ以外の場合はm文字列になり、ワイルドカードは完了しません。

おすすめ記事