在 Mac OS X 中删除文件名中的数字

在 Mac OS X 中删除文件名中的数字

我有一个目录,里面充满了这种格式的文件(每个文件名以数字开头):

102_file.txt
104_list.txt
242_another_file.txt

我想将它们重命名如下(即删除数字):

file.txt
list.txt
another_file.txt

有人可以建议一种方法来做到这一点(大概是从终端)吗?

答案1

我假设你的 Mac 上有 bash shell。

你可以使用 bash参数扩展

for name in *; do mv -v "$name" "${name#[0-9]*_}"; done

这将删除直到第一个的所有数字_

注意:这将覆盖最终具有相同名称的文件。

例子:

$ ls -1
000_file0.txt
001_file1.txt
002_file1.txt
003_003_file3.txt

$ for name in *; do mv -v "$name" "${name#[0-9]*_}"; done
`000_file0.txt' -> `file0.txt'
`001_file1.txt' -> `file1.txt'
`002_file1.txt' -> `file1.txt'
`003_003_file3.txt' -> `003_file3.txt'

001_file1.txt和都002_file1.txt将被重命名为file1.txt。在这种情况下,文件001_file1.txt将被文件 覆盖002_file1.txt。哪个文件将被覆盖取决于 glob 的顺序*。通常它是字母数字。


如果分隔符是其他字符,则替换该字符

for name in *; do mv -v "$name" "${name#[0-9]*_}"; done
                                              ^ this character

例如空间

for name in *; do mv -v "$name" "${name#[0-9]* }"; done
                                              ^ space

相关内容