サブフォルダーの Cat ファイルは、リストで指定された順序でソートされます。

サブフォルダーの Cat ファイルは、リストで指定された順序でソートされます。

ale、bae、galo という名前のサブフォルダが多数あるフォルダ x があり、各サブフォルダに .pest ファイルがあります。

x/ale/ale.pest 
x/bae/bae.pest 
x/galo/galo.pest

.pestファイルを分類する必要がある順序で、フォルダーyにリストがあります。

bae
galo
ale

私のxフォルダで試しています。

for file in ./*/*.pest; do while read line; do cat "$line".pest; done; done  <./y/list

しかし、うまくいきません。

ベストアンサー1

リストに順序があるため、ファイル名をファイル名のワイルドカードパターンと一致させないでください。代わりに、名前はリストから読み取られた文字列で構成されます。

#!/bin/sh

while read -r name; do
    cat "x/$name/$name.pest"
done <y/list >concatenated.pest

これにより、関連するすべてのファイルがリンクされ、で指定されているように、.pest現在のディレクトリにこれらのファイルから呼び出される単一のファイルが作成されます。concatenated.pesty/list

いくつかのチェックが含まれています:

#!/bin/sh

while read -r name; do
    pathname="x/$name/$name.pest"

    if [ ! -f "$pathname" ]; then
        printf 'Can not find %s\n' "$pathname"
        echo 'Output file will be incomplete'
        exit 1
    fi >&2

    cat "$pathname"
done <y/list >concatenated.pest

おすすめ記事