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.pest
y/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