ファイルのすべての行の末尾にファイル名を追加するbashスクリプト(ubuntu 16)に行を追加したいと思います。つまり、フォルダ内のすべてのファイルとすべてのサブフォルダ内のすべてのファイルです。
ファイル名は、英数字や-_などの一部の特殊文字です。
たとえば、
ファイルのfilename_ghrut.txt
前の行は次のとおりです。
blah blah blah
blahblah blahblah
ファイルの行の後ろfilename_ghrut.txt
:
blah blah blah filename_ghrut.txt
blahblah blahblah filename_ghrut.txt
検索しましたが、ほとんどのコマンドが機能していないようです。
特定のディレクトリのすべてのサブフォルダにあるすべてのファイルに対してこのタスクを実行したいと思います。
とても感謝しています。
これを見つけましたが、うまくいきません。
ls file{1..5}.txt|xargs -I% sed -i 's/$/;%/' %
ベストアンサー1
そしてperl
find
find . -type f -exec perl -i -pe 's/$/ $ARGV/' {} +
s/$/ $ARGV/
各行の末尾にスペースとファイル名を追加します。-i
内部編集の場合は、i.bkp
元のファイルのバックアップを保持するには、次のようにします。find
サポートしていない場合は、代わりに使用し+
てください\;
find . -type f
現在のディレクトリのすべてのファイルのリストを提供します-exec
次のコマンドを使用して、これらすべてのファイルに対する操作を許可します。find . -type f -name '*.txt'
次に終わるファイルを制限したい場合.txt
上記の解決策がファイル名などを./file.txt
追加することを指摘した@thiagowfxに感謝します。./foo/file2.txt
./
などを追加せずにファイル名のみを追加するには、このオプションを使用します。
find . -type f -exec perl -i -pe 's/$/$ARGV=~s|.*\/| |r/e' {} +
$ARGV=~s|.*\/| |r
/
すべての文字が削除されたファイル名を指定します。