重命名命令,用于从某个点(字符)替换文件名中的文本,但仅限于并保持文件扩展名
rename command for replacing text in filename from a certain point (character), but only up to, and maintaining the file extension
我有很多文件如下
audiofile_drums_1-ktpcwybsh5c.wav
soundsample_drums_2-fghlkjy57sa.wav
noise_snippet_guitar_5-mxjtgqta3o1.wav
louder_flute_9-mdlsiqpfj6c.wav
我想删除“-”和 .wav 文件扩展名之间的所有内容(包括“-”),留下
audiofile_drums_1.wav
soundsample_drums_2.wav
noise_snippet_guitar_5.wav
louder_flute_9.wav
我尝试使用
删除字符“-”之后的所有内容,包括字符“-”
rename 's/-.*//' *
这给了我
audiofile_drums_1
soundsample_drums_2
noise_snippet_guitar_5
louder_flute_9
并且由于找不到一种简单的方法来再次重命名所有文件,添加 .wav 扩展名,我希望有一种更灵活的方法可以在一个阶段而不是 2 个阶段中用一个漂亮的命令来做到这一点。
有什么建议吗?
谢谢
您可以使用rename 's/-[^\.]*\.wav$/\.wav/' *
第一部分 -[^\.]*\.wav$
搜索 - 后跟 n 个不是 .
的字符,后跟 .wav
和文件名结尾。文件名结尾和 .wav
不是严格需要的,但它有助于避免重命名您不想重命名的文件。
/\.wav/
保留扩展名。
请注意 rename
不是标准实用程序,它是 perl 的一部分,因此 rename
可能无法在每个 linux 系统上使用。
这适用于我的特定情况,但应该适用于任何文件扩展名。
rename -n 's/-.*(?=\.wav$)//' *
该命令查找文件名中 -
符号之后和包含的所有字符,然后使用正向先行** (?=\.wav$)
搜索字符(此文件扩展名case) 在文件名的末尾(由 $
表示,并用无字符替换它们(删除它们)。
** 注意: 正面展望是零宽度断言。
会影响比赛但不会被收录
在更换。 ('.wav' 部分不会
擦除)
在此示例中,(?=\.wav$)
是正向预测。与正则表达式一样,美元符号 $ 表示行尾,非常适合文件扩展名。
我有很多文件如下
audiofile_drums_1-ktpcwybsh5c.wav
soundsample_drums_2-fghlkjy57sa.wav
noise_snippet_guitar_5-mxjtgqta3o1.wav
louder_flute_9-mdlsiqpfj6c.wav
我想删除“-”和 .wav 文件扩展名之间的所有内容(包括“-”),留下
audiofile_drums_1.wav
soundsample_drums_2.wav
noise_snippet_guitar_5.wav
louder_flute_9.wav
我尝试使用
删除字符“-”之后的所有内容,包括字符“-”rename 's/-.*//' *
这给了我
audiofile_drums_1
soundsample_drums_2
noise_snippet_guitar_5
louder_flute_9
并且由于找不到一种简单的方法来再次重命名所有文件,添加 .wav 扩展名,我希望有一种更灵活的方法可以在一个阶段而不是 2 个阶段中用一个漂亮的命令来做到这一点。
有什么建议吗?
谢谢
您可以使用rename 's/-[^\.]*\.wav$/\.wav/' *
第一部分 -[^\.]*\.wav$
搜索 - 后跟 n 个不是 .
的字符,后跟 .wav
和文件名结尾。文件名结尾和 .wav
不是严格需要的,但它有助于避免重命名您不想重命名的文件。
/\.wav/
保留扩展名。
请注意 rename
不是标准实用程序,它是 perl 的一部分,因此 rename
可能无法在每个 linux 系统上使用。
这适用于我的特定情况,但应该适用于任何文件扩展名。
rename -n 's/-.*(?=\.wav$)//' *
该命令查找文件名中 -
符号之后和包含的所有字符,然后使用正向先行** (?=\.wav$)
搜索字符(此文件扩展名case) 在文件名的末尾(由 $
表示,并用无字符替换它们(删除它们)。
** 注意: 正面展望是零宽度断言。 会影响比赛但不会被收录 在更换。 ('.wav' 部分不会 擦除)
在此示例中,(?=\.wav$)
是正向预测。与正则表达式一样,美元符号 $ 表示行尾,非常适合文件扩展名。