Naj*_*hin 3 sed text-processing rename
我在目录中有很多文件 ( file1.txt
,file2.txt
, ...) 中
每个文件都包含一堆行。其中一行是特定文本thetext
后跟随机数,就像thetext56
,thetext21
等等。
我想使用文件本身中的特定文本重命名文件名的开头。所以,file1.txt
将会thetextXXfile1.txt
,file2.txt
将会thetextXXfile2.txt
,等等。
添加addtext
在开头的简单重命名命令是
rename 's?^?addtext?' *.html
Run Code Online (Sandbox Code Playgroud)
在文件中获取特定文本时
sed '/thetext/!d' *.html
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将它们结合起来。
我建议当您想要做的是根据匹配从文件中读取一行时,这grep
是一个更好的工具sed
。欢迎您sed
在下面的循环结构中替换您的。请注意,我还使用了该-m 1
选项,以便 grep 只关注第一个匹配项:
for file in *.html; do
text="$(grep -m 1 "thetext" "$file")"
rename "s?$text?" "$file"
done
Run Code Online (Sandbox Code Playgroud)