直接呼び出しとシェル変数の bufferin 検索出力が異なります。

直接呼び出しとシェル変数の bufferin 検索出力が異なります。

コマンドを使用すると奇妙な動作が発生しますfindが、説明が見つかりません。

1行に1つのファイル名を持つ.txtファイルがあり、findコマンドを使用してデータベースからファイルを再帰的に検索しています。次のコマンドを使用する場合:

for filename in `cat filelist.csv`; do
find /location*/time*/ -name *${filename}*txt
done

1行に1つの出力が期待される結果を取得します。ただし、同じコマンドを使用しても出力を変数に設定する場合(最終的にそうする必要があります):

for filename in `cat filelist.csv`; do
out=`find /location*/time*/ -name *${filename}*txt`
echo ${out}
done

findコマンドは、同じ行のフォルダから一致するすべてのファイルを印刷するようです。 2つの質問があります。

  1. この動作の原因は何ですか?
  2. find一致する各ファイル(フォルダに一致するファイルが多い場合でも)を新しい行の変数として出力するにはどうすればよいですか?

乾杯!

ベストアンサー1

これは、シェルが変数を展開すると、すべての改行文字が「折りたたまれて」スペースに変わるために発生します。したがって、out変数に改行文字が含まれている場合は、${out}その改行文字をすべて空白に変更してください。ただし、"${out}"改行文字は保存されます。

おすすめ記事