私のディレクトリには多くのファイルがあります(file1.txt
、、、file2.txt
...)
各ファイルには複数行が含まれています。行の1つは、特定のテキストなどthetext
のランダムな数字が続くことですthetext56
。thetext21
ファイル自体の特定のテキストを使用してファイル名の先頭の名前を変更したいと思います。だから、file1.txt
なりますthetextXXfile1.txt
、file2.txt
なりますなどですthetextXXfile2.txt
。
最初に追加されたaddtext
簡単な名前変更コマンドは次のとおりです。
rename 's?^?addtext?' *.html
ファイルから特定のテキストをインポートするとき
sed '/thetext/!d' *.html
しかし、それらを組み合わせる方法がわかりません。
答え1
一致に基づいてファイルから1行を読むことがすべての場合は、よりgrep
良いツールとしてこれをお勧めします。下のループ構造をsed
交換することもできます。 grepが最初の一致のみを見つけるようにsed
このオプションも使用しました。-m 1
for file in *.html; do
text="$(grep -m 1 "thetext" "$file")"
rename "s?$text?" "$file"
done