配列に基づいてファイルを見つける方法

配列に基づいてファイルを見つける方法

拡張子なしでファイル名のリストを含む配列があります。たとえば、次のようになります。

filearray=("fileA" "fileB" "fileC")

これらのファイルは複数のディレクトリに分散されています。ディレクトリを繰り返しながら、各ディレクトリの配列内のファイルに対して操作を実行しようとしています。配列でfindまたはgrepを使用する方法は?

このようなことができますか? :

Dirarray= ("dirA" "dirB")
for Dir in "${Dirarray[@]}"; do
    cd "$Dir";
    for file in "${filearray[@]}"; do
        if find . -regextype posix-extended -regex "$file"; then;
            do X;
        fi;
     done
done

ありがとうございます!

ベストアンサー1

違うようにします。

Dirarray= ("dirA" "dirB")
for Dir in "${Dirarray[@]}"; do
    cd "$Dir"
    for file in "${filearray[@]}"; do
# Here a change. If "$file" exists...
        if [[ -e "$file"]]; then
            : # do something
        fi
     done
done

man testその他のファイルテストオプションについては、リソースを参照してください。

その理由は、この方法がはるかに簡単なためです。配列に正規表現が含まれていない場合。

おすすめ記事