如何删除文件名中第一个句点之前的所有字符?

如何删除文件名中第一个句点之前的所有字符?

我有 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; dofor对每个以数字开头并以 . 结尾的文件名启动循环flacmv "$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+\.//导致这些数字和句点被替换为任何内容。

相关内容