我有 1366 个文件,其文件名最多以四个数字开头。例如:
128.unique filename.flac
6.unique filename.flac
1288.unique filename.flac
我想删除所有数字和句点,这样所有文件都会像这样存在:
unique filename.flac
unique filename.flac
unique filename.flac
我运行的是 Ubuntu 16.04。我怎样才能实现这个目标?
答案1
使用外壳
让我们从这些文件开始:
$ ls
'unique filename 1.flac' 'unique filename 2.flac' 'unique filename
让我们运行这个命令:
$ for f in [0-9]*flac; do mv "$f" "${f#*.}"; done
上述执行后,文件为:
$ ls
'unique filename 1.flac' 'unique filename 2.flac' 'unique filename 3.flac'
for f in [0-9]*flac; do
for
对每个以数字开头并以 . 结尾的文件名启动循环flac
。 mv "$f" "${f#*.}"
删除文件名的开头部分(包括第一个句点)。done
表示循环结束for
。
Perl的rename
命令
那里有两个不相容实用程序名为rename
.此方法适用于Perl 自带的rename
命令(有时称为)。prename
如果您安装了其他版本rename
,则此方法将不起作用。
让我们再次从这些文件开始,然后运行prename
命令:
$ ls
'1288.unique filename 3.flac' '128.unique filename 1.flac' '6.unique filename 2.flac'
$ prename 's/^\d+\.//' [0-9]*flac
$ ls
'unique filename 1.flac' 'unique filename 2.flac' 'unique filename 3.flac'
Perl 的重命名使用正则表达式。 \d+\.
匹配一个或多个数字,后跟一个句点。 ^
要求这些数字出现在文件名的开头。 s/^\d+\.//
导致这些数字和句点被替换为任何内容。