Regex 使用正则表达式重命名多个文件
我从网上下载了一些文件。在这些文件的名称字段中,每个Regex 使用正则表达式重命名多个文件,regex,linux,file-rename,Regex,Linux,File Rename,我从网上下载了一些文件。在这些文件的名称字段中,每个'字符都被“%20”替换。我想重命名所有这些,但文件数量太多。因此,手动方法将是笨拙的。我知道从命令行正则表达式这可以做到,但我不是很熟悉它。所以不需要什么帮助 总结是,我想通过将所有“%20”模式替换为”来重命名目录中的所有文件。我怎么做 样本: 17%20Clipping.cpp --> 17 Clipping.cpp 14%20Mouse%20(Button)%20Listener.cpp --> 14 Mouse (Butt
'
字符都被“%20”
替换。我想重命名所有这些,但文件数量太多。因此,手动方法将是笨拙的。我知道从命令行正则表达式这可以做到,但我不是很熟悉它。所以不需要什么帮助
总结是,我想通过将所有“%20”
模式替换为”
来重命名目录中的所有文件。我怎么做
样本:
17%20Clipping.cpp --> 17 Clipping.cpp
14%20Mouse%20(Button)%20Listener.cpp --> 14 Mouse (Button) Listener.cpp
可以使用接受正则表达式的命令
rename
重命名一组文件
例如,要重命名与“*.bak”匹配的所有文件以除去扩展名,您可以说
rename 's/\.bak$//' *.bak
要将大写名称转换为小写名称,可以使用
rename 'y/A-Z/a-z/' *
你的回答是:
rename 's/%20/ /' *.cpp
可以使用接受正则表达式的命令
rename
重命名一组文件
例如,要重命名与“*.bak”匹配的所有文件以除去扩展名,您可以说
rename 's/\.bak$//' *.bak
要将大写名称转换为小写名称,可以使用
rename 'y/A-Z/a-z/' *
你的回答是:
rename 's/%20/ /' *.cpp
我建议不要在文件名中加空格(可能改用下划线)。无论如何,这里有一个命令可以执行此操作:
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
模式中需要反斜杠,因为在这种情况下,
%
是元字符(末尾匹配)。我建议不要在文件名中加空格(可能改用下划线)。无论如何,这里有一个命令可以执行此操作:
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
模式中需要反斜杠,因为在本例中,
%
是一个元字符(末尾匹配)。是一个perl脚本来完成此操作,或者如果您使用zshell,您可以查看zmv
,谢谢您的链接。实际上,我想学习使用linux命令,因为它是一个通用工具。perl脚本在任何地方都不适用于我。这是一个perl脚本,或者如果您使用zshell,您可以查看zmv
,谢谢您的链接。实际上,我想学习使用linux命令,因为它是一个通用工具。perl脚本不会在任何地方都可用。首先定义一个正则表达式('s/%20/'
),然后将其应用于与第二个正则表达式匹配的每个文件(*.cpp
)不,我的意思是,请按字母顺序解释第一个表达式。我搞不懂。最好读一读关于re的书s
表示在两个前斜杠之间更改匹配表达式,在后两个斜杠之间更改匹配表达式,这里是'
在使用基于模式的重命名时要非常小心。从手册页:“更名没有任何保障措施。如果用户具有重写文件名的权限,则该命令将毫无疑问地执行该操作。例如,当命令以root用户身份在/lib目录中运行时,结果可能非常严重。除非您真正知道自己在做什么,否则请务必在运行该命令之前进行备份。“谢谢,这正是我想知道的。首先定义一个正则表达式('s/%20/'
),然后将其应用于与第二个正则表达式匹配的每个文件(*.cpp
)不,我是说,请解释第一个表达式的字母。我看不懂。最好读一读re。s
意味着在两个第一个斜杠之间更改匹配表达式,在第二个两个斜杠之间更改匹配表达式,这里是”
请非常小心基于模式的重命名。从手册页上看:“重命名没有任何安全措施。如果用户具有重写文件名的权限,则该命令将毫无疑问地执行该操作。例如,当命令以root用户身份在/lib目录中运行时,结果可能非常严重。除非您真正知道自己在做什么,否则请务必在运行命令之前进行备份。“谢谢,这正是我想知道的。您可以使用内置变量扩展和替换来代替生成新进程:mv$I${I/%20/}
。您可以使用内置变量扩展和替换来代替生成新进程:mv$i${i/%20/}
。