2011-07-20 5 views
1

複数のテキストファイルをデリミタとファイル名で結合して、すべての新しい行を消去し、すべてを1行に収めたいと考えています。デリミタを1行に結合したテキストファイル

find -type f -name '*.txt' -print | while read filename; do echo "±±±±± $filename"; cat "$filename"; done > files.txt; 

tr '\n' ' ' <files.txt> desiredoutput.txt 

私は無駄でこれら二つを組み合わせて試してみた:

これまでのところ私は2つの異なるスクリプトでこれを行うことができます。助言がありますか?

答えて

0

それらを結合する最も簡単な方法は、catの代わりに各$filenametrを行うには、次のようになります。

 
find -type f -name '*.txt' -print | while read filename 
do echo -n "±±±±± $filename " # The -n suppresses the \n at the end of the line. 
    tr '\n' ' ' < "$filename" 
    echo -n ' ' # Add a terminating delimiter 
done > desiredoutput.txt; 
+0

はどうもありがとうございました!私は間違いなく何とかそれをループし、3GBのtxtファイルを作った。しかし、それはすべて今働いている!ありがとう – Chris

+0

実際に私が持っているこの1つのフォルダは、それが無限ループに入り、すべてのハードドライブを使用する原因になります。何が起こっているのか? – Chris

+1

おそらく、 'find'は出力ファイルを見つけてそれを入力ファイルとして使用しています(' '* * .txt'にマッチします)。 – MRAB

関連する問題