如何使用 unix 命令从文件名中删除整数模式
How to remove an integer pattern from filename using unix command
我有一堆带有曲目编号前缀的 mp3 文件。例如:
01 - MovieName - SongNameA.mp3
02 - MovieName - SongNameB.mp3
我需要搜索并删除文件名中的曲目编号和连字符。
我尝试使用 find 和 grep,但找不到要使用 mv 命令进行重命名的管道查询。
使用shell
for f in [[:digit:]][[:digit:]]' - '*mp3; do mv -i -- "$f" "${f#?????}"; done
或者,同样的东西,但写成多行:
for f in [[:digit:]][[:digit:]]' - '*mp3
do
mv -i -- "$f" "${f#?????}"
done
glob [[:digit:]][[:digit:]]' - '*mp3
匹配您感兴趣的文件。mv "$f" "${f#?????}"
删除文件名称的前五个字符。 mv
的 -i
选项告诉它在覆盖现有文件之前询问。
使用 Perl 重命名实用程序
rename 's/^\d\d - //' *mp3
这会查看所有 .mp3
文件,如果它们的名称以两位数字开头,然后是 space,然后是破折号,然后是 space,那么这些字符是已删除。
rename
将拒绝覆盖现有文件,除非您提供 -f
选项。
本节涉及 Perl 的 rename
实用程序。请注意,某些 linux 发行版默认安装了不同且不兼容的 rename
实用程序。有时,perl rename
实用程序在名称 prename
.
下可用
我有一堆带有曲目编号前缀的 mp3 文件。例如:
01 - MovieName - SongNameA.mp3
02 - MovieName - SongNameB.mp3
我需要搜索并删除文件名中的曲目编号和连字符。
我尝试使用 find 和 grep,但找不到要使用 mv 命令进行重命名的管道查询。
使用shell
for f in [[:digit:]][[:digit:]]' - '*mp3; do mv -i -- "$f" "${f#?????}"; done
或者,同样的东西,但写成多行:
for f in [[:digit:]][[:digit:]]' - '*mp3
do
mv -i -- "$f" "${f#?????}"
done
glob [[:digit:]][[:digit:]]' - '*mp3
匹配您感兴趣的文件。mv "$f" "${f#?????}"
删除文件名称的前五个字符。 mv
的 -i
选项告诉它在覆盖现有文件之前询问。
使用 Perl 重命名实用程序
rename 's/^\d\d - //' *mp3
这会查看所有 .mp3
文件,如果它们的名称以两位数字开头,然后是 space,然后是破折号,然后是 space,那么这些字符是已删除。
rename
将拒绝覆盖现有文件,除非您提供 -f
选项。
本节涉及 Perl 的 rename
实用程序。请注意,某些 linux 发行版默认安装了不同且不兼容的 rename
实用程序。有时,perl rename
实用程序在名称 prename
.