2

ディレクトリとそのサブディレクトリ内の多数のファイルの先頭にある 1 つのファイルからテキストを挿入する必要があります。edを使用して、ファイルごとにこれを正常に実行できました。

ed -s FileToAddTo.txt <<< $'0r TextToAdd.txt\nw'

ただし、FileToAddTo.txt を *.txt に置き換えても何も起こりません。これを変更したり、sed などの別の Unix コマンドを使用して、特定の拡張子で終わるディレクトリ内のすべてのファイルに TextToAdd.txt の内容を再帰的に追加するにはどうすればよいですか? 例えば

ed -rs *.txt <<< $'0r TextToAdd.txt\nw'

この行の上のコードは機能しないことに注意してください。これは、私が達成したいことを示しているだけです。

4

3 に答える 3

5

このような:

cat TextToAdd.txt FileToAddTo.txt > $$.tmp && mv $$.tmp FileToAddTo.txt

つまり、新しいヘッダー ファイルと元のファイルを一時ファイルに cat し、成功した場合は、一時ファイルの名前を元のファイルに変更します。

そして再帰的に実行する!! バックアップされたデータでテストしてください!!!

find . -type f -name "*.txt" -exec sh -c "cat TextToAdd.txt {} > $$.tmp && mv $$.tmp {}" \;
于 2014-04-11T16:42:08.693 に答える
1

これは私にとってはかなりうまくいきます:

$ for fn in `find . -name '*.txt'`; do; cat textToAdd.txt $fn > $$.tmp && mv $$.tmp $fn; done;
于 2017-09-22T15:52:17.567 に答える
0

これに基づいて、次を試すことができます。

for fn in `ls -R /folderName`; do cat "$fn" >> fileName;  done
于 2014-04-11T16:38:39.683 に答える