使用文件本身中的特定文本重命名文件名的开头

使用文件本身中的特定文本重命名文件名的开头

我的目录中有很多文件 ( file1.txt, file2.txt, ...)

每个文件都包含一堆行。其中一行是特定文本,thetext后跟随机数字,如thetext56thetext21等。

我想使用文件本身中的特定文本重命名文件名的开头。所以,file1.txt将是thetextXXfile1.txtfile2.txt将是thetextXXfile2.txt,等等。

添加addtext在开头的简单重命名命令是

rename 's?^?addtext?' *.html

在获取文件中的特定文本时

sed '/thetext/!d' *.html

但我不知道如何将它们结合起来。

答案1

我建议当您想要做的是根据匹配从文件中读取一行时,这grep是一个更好的工具。sed欢迎您替换sed下面的循环结构。请注意,我还使用了该-m 1选项,以便 grep 只查找第一个匹配项:

for file in *.html; do
   text="$(grep -m 1 "thetext" "$file")"
   rename "s?$text?" "$file"
done

相关内容