我从互联网上下载了一些文件。在这些文件的名称字段中,每个' '
字符都替换为"%20"
。我想重命名所有这些,但文件数量太高。所以手动方法会很笨拙。我从命令行了解正则表达式,这可以完成,但我不是很熟悉它。所以很少需要帮助。
总结是,我想通过用"%20"
替换所有" "
模式来重命名目录中的所有文件。我该怎么办?
样品:
17%20Clipping.cpp --> 17 Clipping.cpp
14%20Mouse%20(Button)%20Listener.cpp --> 14 Mouse (Button) Listener.cpp
答案 0 :(得分:3)
您可以使用接受正则表达式
的命令rename
重命名一组文件
例如,要重命名与“* .bak”匹配的所有文件以剥离扩展名,您可能会说
rename 's/\.bak$//' *.bak
要将大写名称翻译为较低的名称,请使用
rename 'y/A-Z/a-z/' *
和你的回答:
rename 's/%20/ /' *.cpp
答案 1 :(得分:2)
我建议不要在文件名中放置空格(也许使用下划线)。无论如何,这是一个命令:
for i in *%20*; do new=$(echo $i|sed 's/%20/ /'); echo mv $i "$new"; done
在其当前形式中,它仅打印它将执行的命令。一旦确定它符合您的要求,请删除echo
。
正如@ronmrdechai所说,以下是一项改进:
for i in *%20*; do echo mv $i "${i/\%20/ }"; done
模式中需要反斜杠,因为在这种情况下%
是元字符(在末尾匹配)。