linux下面如何用正则表达式重命名?比如当前目录下有fs_host_0.log,怎样重名为fs_host_0_bak.log?

azxctor 2014-05-15 11:42:32
linux下面如何用正则表达式重命名?比如当前目录下有fs开头的文件,fs*,比如fs_host_0.log,怎样重名为fs*_bak ,命名结果为fs_host_0.log_bak?采用mv操作,谢谢!
...全文
195 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
azxctor 2014-05-28
  • 打赏
  • 举报
回复
引用 3 楼 ljc007 的回复:
[quote=引用 2 楼 u011460867 的回复:] 那生成.bak文件后,我先把.bak后缀去掉,恢复成原先的的文件名称,该怎么改 谢谢啦
for i in *.bak; do mv $i ${i/%.bak}; done[/quote] 但是如果当前文件.bak不存在,就会报错:mv: cannot stat `*.bak': No such file or directory 如何在执行前加上判断.bak文件是否存在,该怎么加呢?
azxctor 2014-05-28
  • 打赏
  • 举报
回复
引用 5 楼 ljc007 的回复:
引用
版主,能说明一下去.bak那个shell是怎么工作的么?之前没碰到过这种用法。
#子字符串替换 ${str/abc/xyz} #用xyz替换第一个匹配的abc;如果省略xyz那么将删除第一个匹配的abc ${str//abc/xyz} #用xyz替换所有匹配的abc;如果省略xyz那么将删除所有匹配的abc ${str/#abc/xyz} #用xyz替换开头的abc;如果省略xyz那么将删除开头的abc ${str/%abc/xyz} #用xyz替换结尾的abc;如果省略xyz那么将删除结尾的abc
请问版主: find ./ -name '*.log' -exec mv {} {}.bak \;这种方式可以将当前路径下找到的log'文件加上bak后缀, 那如何将后缀为.log.bak的文件后缀重新改为.log,(就是去掉后面的.bak): find ./ -name '*.log.bak' -exec mv ?????????????? \;
wjb_yd 2014-05-16
  • 打赏
  • 举报
回复
引用 3 楼 ljc007 的回复:
[quote=引用 2 楼 u011460867 的回复:] 那生成.bak文件后,我先把.bak后缀去掉,恢复成原先的的文件名称,该怎么改 谢谢啦
for i in *.bak; do mv $i ${i/%.bak}; done[/quote] 版主,能说明一下去.bak那个shell是怎么工作的么?之前没碰到过这种用法。
ljc007 2014-05-16
  • 打赏
  • 举报
回复
引用
版主,能说明一下去.bak那个shell是怎么工作的么?之前没碰到过这种用法。
#子字符串替换 ${str/abc/xyz} #用xyz替换第一个匹配的abc;如果省略xyz那么将删除第一个匹配的abc ${str//abc/xyz} #用xyz替换所有匹配的abc;如果省略xyz那么将删除所有匹配的abc ${str/#abc/xyz} #用xyz替换开头的abc;如果省略xyz那么将删除开头的abc ${str/%abc/xyz} #用xyz替换结尾的abc;如果省略xyz那么将删除结尾的abc
ljc007 2014-05-15
  • 打赏
  • 举报
回复
引用 2 楼 u011460867 的回复:
那生成.bak文件后,我先把.bak后缀去掉,恢复成原先的的文件名称,该怎么改 谢谢啦
for i in *.bak; do mv $i ${i/%.bak}; done
azxctor 2014-05-15
  • 打赏
  • 举报
回复
那生成.bak文件后,我先把.bak后缀去掉,恢复成原先的的文件名称,该怎么改 谢谢啦
ljc007 2014-05-15
  • 打赏
  • 举报
回复
for i in fs*; do mv $i $i.bak; done

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧