如何在目录中重命名多个文件而在Linux中保留扩展名

时间:2018-09-04 21:00:28

标签: linux bash

我需要重命名目录中的文件,以删除每个文件都不同但启动方式相同的字符串。我知道如何从文件名中删除字符,但是如何保留扩展名?我知道这是一个常见问题的一种变体,但是我找不到适合我确切需求的答案。

Redshirts_ep6_dSBHpCsvQ3BfQ7-NNIjXYO4pnHpNMvu7bfvURLF3BSzB_3YOOrBBoNnICTR-hg.mp3
-> Redshirts.mp3
PathsNotTaken_ep6_XWixFER4PJyeozVfcxT96UajpnVI7cRMRhAU4Aj9-rpeacnBleuGY9zCPDe0aQ.mp3
-> PathsNotTaken.mp3

1 个答案:

答案 0 :(得分:0)

Linux命令rename在这里非常有用。它可以使用正则表达式执行重命名。

这可能可以重写一下,但是似乎可以完成以下任务:

rename -n 's/(^[^_]*)_.*/$1.mp3/' *.mp3

只需删除-n标志即可运行。保留它只是一个测试。

此正则表达式说:

在行^的开头不包含下划线[^_]的字符重复了任意次数*,并且被捕获到捕获组(^[^_]*)中后跟一个下划线和任意数量的任何其他字符_.*。然后,使用第一个捕获组$1紧跟着.mp3

来重写它们