我有一堆文件名中添加了随机字符。我想批量重命名它们原始文件名减去添加的字符全部在同一目录中。
例子:
从: foobar.txt_fdnf
Bubble.txt_terj
apple.txt_fspd
到: foobar.txt
Bubble.txt
apple.txt
答案1
您可以使用rename
带有正则表达式的命令来批量重命名。
在基于 debian 的发行版中,这个包称为“rename”;在基于 Arch 的发行版中,它被称为perl-rename
.
(此正则表达式假设所有文件都遵循以下模式:.txt_randomtext)
rename -n 's/\.txt_.+/.txt/' *.txt*
-n
选项允许您在应用更改之前检查更改。如果您确定这是重命名这些文件的方式,请删除-n
选项并再次运行该命令。
答案2
在zsh
:
autoload -Uz zmv
zmv -n '(*.txt)_[[:lower:]](#c4)' '$1'
(-n
如果满意,请删除以进行空运行)
将重命名名称.txt
以 4 个小写字母结尾的文件(替换[[:lower:]]
为以[a-z]
限制为 26 个不带变音符号的英文字母)。
zmv
在开始任何重命名之前将检查是否有重叠。