Shell 脚本 - 运行正则表达式来修改文件,其中包括文件名
我有许多名为 12345.html、12346.html 等的 html 文件。我需要将“style.css”更改为“style-12345.css”或适当的文件名。不知道用什么工具,有推荐吗?
I have many html files named 12345.html, 12346.html, etc. I need to change "style.css" to "style-12345.css" or the appropriate file name. I'm not sure what tool to use, recommendations?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 for 循环和 sed 可以轻松完成此操作:
循环运行内部命令,并将
$i
设置为每个 .html 文件名。sed -i
就地修改文件。basename $i .html
获取不带.html
后缀的$i
(即只是数字)This is pretty easily done with a for loop and sed:
The loop runs the inner command with
$i
set to each .html filename.sed -i
modifies the file in place.basename $i .html
gets$i
without the.html
suffix (i.e. just the number)查找名为
rename
的命令。它有两种类型,具体取决于实施情况。perl
包提供了/usr/bin/prename
,它使用 perl 风格的正则表达式来重命名文件。例如,此命令会将每个包含“foo”的文件名中的“foo”更改为“bar”。
util-linux
软件包提供了/usr/bin/rename
,它使用简单的字符串替换来重命名文件。例如,此命令与第一个命令具有相同的效果。
prename
比常规的rename
功能强大得多,但这种功能意味着它使用起来更加棘手。Look for a command named
rename
. It comes in two varieties, depending upon the implementation.The
perl
package provides/usr/bin/prename
which uses perl-style regular expressions to rename files. As an example, this commandwould change 'foo' to 'bar' in every filename that contains 'foo'.
The
util-linux
package provides/usr/bin/rename
which uses simple string substitution to rename files. As an example, this commandwould have the same effect as the first one.
prename
is much more powerful than regularrename
, but that power means it's trickier to use.