首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重命名linux目录中的文件的最佳过程

重命名linux目录中的文件的最佳过程
EN

Stack Overflow用户
提问于 2013-07-09 08:58:44
回答 3查看 540关注 0票数 1

此问题与重命名Linux系统上目录中的文件有关,其中受影响的文件以以下常规格式显示:

代码语言:javascript
复制
index.html?p=155
index.html?page_id=10
index.html?author=2&paged=5
index.html?feed=rss2&tag=search-engine
index.html?tag=social-media

可能有一个shell级别的"rename“命令,我可以用它来替换问号(?)在目录中的每个文件中使用下划线(_)?

提前感谢您的任何建议或信息!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-09 09:29:17

我自己更喜欢使用rename命令,尽管有时一个自己动手的for循环可能更有针对性。

注意:renamesed表达式作为要更改的参数,并将文件名作为最后一个参数。正确的调用应该是:

代码语言:javascript
复制
rename 's/\?/_/' index*

因为当不是\转义时,?指示前一个字符的0或1。

这也更容易放入可以递归操作的find命令中,等等:

代码语言:javascript
复制
find . -name index.html* -exec rename 's/\?/_/' {} +
票数 1
EN

Stack Overflow用户

发布于 2013-07-09 09:08:37

代码语言:javascript
复制
for file in index.html\?*; do
  new=${file/\?/_} # Substitute underscore for ?
  mv "$file" "$new" # Rename the file
done

有关所使用的替换语法的信息,请参阅bash man page的参数扩展部分。

票数 1
EN

Stack Overflow用户

发布于 2013-07-09 09:12:02

可以使用rename命令。

代码语言:javascript
复制
rename '?' '_' *

第一个参数是要替换的表达式,第二个参数是要用来替换第一个参数的字符串,最后一个选项是选择要应用该参数的文件(在本例中,所有文件都在当前目录中)

有关更多细节,请参阅man pagehttp://ss64.com/bash/rename.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17538304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档