複数のファイルの内容を読み取るには?

複数のファイルの内容を読み取るには?

複数のファイルの内容を読む必要があります。現在、以下のコードを使用して1つのファイルの内容を読み取ることができます。このコードは、「文字列」を使用して「rules1.txt」の内容をさらに読みます。同じ機能が必要ですが、「apps.txt」から複数のファイルを読み取る必要があります。

for i in $(cat apps.txt);
do    
cd /local/apps/oracle/Middleware/user_projects/epmsystem1/EssbaseServer/essbaseserver1/app/$i
echo $i >> /data/shellscripts/essbase/Operate/Overlays/rules1.txt     done
for i in $(ls *.rul);do
echo $i  >> /data/shellscripts/essbase/Operate/Overlays/rules1.txt      
strings $i  >> /data/shellscripts/essbase/Operate/Overlays/rules.txt

ベストアンサー1

apps.txtファイル全体forをループとして読み込まないでください。通常、ファイルが大きいとメモリの問題が発生する可能性があり、ファイルapps.txt名にスペースが含まれていても問題が発生する可能性があります。出力を繰り返さないでくださいls。また、参照変数を拡張してprintf変数データを出力するためにも使用されます。

関連:

提案:

#!/bin/sh

appdir='/local/apps/oracle/Middleware/user_projects/epmsystem1/EssbaseServer/essbaseserver1/app'
outdir='/data/shellscripts/essbase/Operate/Overlays'

while IFS= read -r app; do
    printf '%s\n' "$app"
    for name in "$appdir/$app"/*.rul; do
        printf '%s\n' "${name##*/}"
        strings "$name"
    done
done <apps.txt >"$outdir/rules1.txt"

その後、ファイルappから読み取り、そのサブディレクトリ内のすべてのファイルにapps.txtアクセスします。文字列の合計(現在のファイルのデフォルト名)は反復ごとに比較されます。出力はファイルに移動されます。*.rul$appdir$app${name##*/}*.rulstrings$outdir/rules1.txt

また、(私の解決策に関して)

おすすめ記事