此问题与重命名Linux系统上目录中的文件有关,其中受影响的文件以以下常规格式显示:
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“命令,我可以用它来替换问号(?)在目录中的每个文件中使用下划线(_)?
提前感谢您的任何建议或信息!
发布于 2013-07-09 09:29:17
我自己更喜欢使用rename命令,尽管有时一个自己动手的for循环可能更有针对性。
注意:rename将sed表达式作为要更改的参数,并将文件名作为最后一个参数。正确的调用应该是:
rename 's/\?/_/' index*因为当不是\转义时,?指示前一个字符的0或1。
这也更容易放入可以递归操作的find命令中,等等:
find . -name index.html* -exec rename 's/\?/_/' {} +发布于 2013-07-09 09:08:37
for file in index.html\?*; do
new=${file/\?/_} # Substitute underscore for ?
mv "$file" "$new" # Rename the file
done有关所使用的替换语法的信息,请参阅bash man page的参数扩展部分。
发布于 2013-07-09 09:12:02
可以使用rename命令。
rename '?' '_' *第一个参数是要替换的表达式,第二个参数是要用来替换第一个参数的字符串,最后一个选项是选择要应用该参数的文件(在本例中,所有文件都在当前目录中)
有关更多细节,请参阅man page。http://ss64.com/bash/rename.html
https://stackoverflow.com/questions/17538304
复制相似问题