du や ls -l など、複数行を返す bash コマンドの各行に文字列を追加する方法

du や ls -l など、複数行を返す bash コマンドの各行に文字列を追加する方法

複数のアーカイブに保存する必要があるいくつかのディレクトリのコンテンツファイルを作成したいと思いますtar。私は使う

du --all currentdir >> contents.list

そのような理由で。

ファイルに書き込む前に、tar出力の各行にアーカイブ名を追加したいと思います。du私はこれを行うことができると思います:

du --all currentdir | while read  i; do echo "$i mytar" >> contents.list ; done

より簡単な解決策があると思いますが、bashスクリプトは初めてです。

ベストアンサー1

このためにwhileループを使用すると、非常に遅くなります。各行の末尾に静的文字列を追加するには、次のようにしますsed

du --all | sed 's/$/ myArchive.tar/'

または、変数にアーカイブ名を含めたい場合(例$i:):

du --all | sed "s/$/ $i/"

s/old/new/old最初の項目を置き換える sed の代替演算子ですnew。この記号は$行の終わりと一致するため、各行の終わりにのみs/$/foo/追加されます。foo

おすすめ記事