Regex 重命名文件Mac命令行
我在一个目录中有一堆文件,这些文件的名称很不恰当。我想更改名称中的两个字符。 例如,我有: >ch:sdsn-sdfs.txt 我想删除“>”并将“:”改为“\ux” 导致 CHU sdsn-sdfs.txt 我试着只说Regex 重命名文件Mac命令行,regex,macos,file,Regex,Macos,File,我在一个目录中有一堆文件,这些文件的名称很不恰当。我想更改名称中的两个字符。 例如,我有: >ch:sdsn-sdfs.txt 我想删除“>”并将“:”改为“\ux” 导致 CHU sdsn-sdfs.txt 我试着只说mv\\>ch\:*ch\*,但没用。 有没有简单的解决办法 首先,我应该说最简单的方法是使用 prename或rename命令 自制软件包rename,MacPorts软件包renameutils: 这比等效的sed命令更容易理解 但是对于理解sed命令,sed手册页是有帮助的
mv\\>ch\:*ch\*
,但没用。有没有简单的解决办法 首先,我应该说最简单的方法是使用 prename或rename命令 自制软件包
rename
,MacPorts软件包renameutils
:
这比等效的sed命令更容易理解
但是对于理解sed命令,sed手册页是有帮助的。如果
运行mansed并搜索&(使用/命令搜索),
在s/foo/bar/replacements中,您会发现它是一个特殊的字符
s/regexp/replacement/
Attempt to match regexp against the pattern space. If success‐
ful, replace that portion matched with replacement. The
replacement may contain the special character & to refer to that
portion of the pattern space which matched, and the special
escapes \1 through \9 to refer to the corresponding matching
sub-expressions in the regexp.
因此,\(.\)
匹配第一个字符,该字符可由\1
引用。
然后
匹配下一个字符,该字符始终为0。
然后,\(.*)
匹配文件名的其余部分,该文件名可由\2
引用
替换字符串使用和(原始
文件名)和\1\2
这是文件名的每一部分,第二部分除外
字符,它是一个0
这是一个相当神秘的方法,伊姆霍。如果为了
由于某些原因,重命名命令不可用,您希望使用
sed重新命名(或者你做的事情太复杂了)
对于重命名?),在正则表达式中更加明确会使
更具可读性。也许是这样的:
ls F00001-0708-*|sed 's/F0000\(.*\)/mv & F000\1/' | sh
能够看到未来的实际变化
s/search/replacement/使其更具可读性。而且它也不能保持
如果不小心运行文件名,则会从文件名中吸出字符
两次左右。对于要重命名的命令行脚本,有很好的答案
对于Mac,在GUI中,Finder具有批量重命名功能。若源文件列表中有一些模式需要查找和替换,那个么它就非常方便了
选择所有需要替换的文件,单击鼠标右键并选择“重命名”
在重命名时,输入find and replace string
重命名中的其他选项,以对文件名进行排序:
要为文本添加前缀或后缀,请执行以下操作:
请参见此链接,尝试在文件名中添加双引号@萨莫特:谢谢,我一直在四处寻找答案,但这个答案从来没有出现过。你想把它作为一个答案,我可以选择它吗?遗憾的是,renameutils MacPort没有包含rename
命令!尽管如此,答案还是很好。
ls F00001-0708-*|sed 's/F0000\(.*\)/mv & F000\1/' | sh