我有一个目录,里面充满了这种格式的文件(每个文件名以数字开头):
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