微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎样才能replace目录中的所有文件名string? 具体而言,我需要从目录中的所有文件名删除“\#015”

目录( /root/path/ )中的许多文件都附加了一个奇怪的string( #015 )。 帮我把它们replace成没有奇怪string的常规名字。

我需要:

/root/path/img1.png#015 /root/path/img2.jpg /root/path/img3.png#015

成为:

/root/path/img1.png /root/path/img2.jpg /root/path/img3.png

你能帮我吗?

想要一个实现了“@include”的AWK

如何将文本文件转换为matrix?

在bash命令中调用一个自定义函数

bash合并文件中的行

文件和pipe道分组到awk命令

正则expression式引擎位于哪里?

如何在使用sed的string匹配后追加带有美元符号的variables?

Shell脚本linux减去参数grep

禁止从awk脚本调用的系统命令

使用awkreplace正则expression式模式

for file in *#015 do mv -- "$file" "${file%#015}" done

您可能需要转义“”。 先在tmp目录下试试。

如果你已经安装了rename ,这将变成一个相当简单的任务:

rename 's/\#015$//' /root/path/*\#015

如果需要,可以添加-f标志以强制覆盖现有文件

这就是我过去用一个小壳来解决类似问题的方法

cd /root/path/ ls | grep '#015' | sed 's/(.*)\#015/mv & 1/' | sh

您可以通过find和参数替换来完成,如下所示:

#!/bin/bash find -name '*\#015' | while IFS= read -rf do mv -- "${f}" "${f%?????}" done

把上面的代码放到你的/root/path/一个名为my_script.sh的脚本中,然后通过chmod +x my_script.sh && ./my_script.sh运行它

请注意,这会将递归更改应用于/root/path/下的所有子文件夹。

说明:

find -name '*\#015' :找到所有以#015结尾的文件

然后找到每个这样的文件: mv "${f}" "${f%?????}"将其从旧名称重命名为新名称,并删除文件名中的最后5个字符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐