我的目录中有很多文件 ( file1.txt
, file2.txt
, ...)
每个文件都包含一堆行。其中一行是特定文本,thetext
后跟随机数字,如thetext56
、thetext21
等。
我想使用文件本身中的特定文本重命名文件名的开头。所以,file1.txt
将是thetextXXfile1.txt
,file2.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