ファイル自体の特定のテキストを使用して、ファイル名の先頭の名前を変更します。

ファイル自体の特定のテキストを使用して、ファイル名の先頭の名前を変更します。

私のディレクトリには多くのファイルがあります(file1.txt、、、file2.txt...)

各ファイルには複数行が含まれています。行の1つは、特定のテキストなどthetextのランダムな数字が続くことですthetext56thetext21

ファイル自体の特定のテキストを使用してファイル名の先頭の名前を変更したいと思います。だから、file1.txtなりますthetextXXfile1.txtfile2.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

関連情報