删除文件名中的前导字符直至达到特定模式

删除文件名中的前导字符直至达到特定模式

假设我有名为: 93162-117352 - May 24, 2017 345 PM_16_163_student.csv

我想将其重命名为: 16_163_student.csv

我该如何通过重命名来做到这一点?

答案1

您想要删除文件名中直到并包括第一个_.这与“中所要求的类似,但更容易”一致地更改文件名

我的解决方案是(假设像 POSIX shell 这样bash):

for name in *.csv; do
    mv -i -- "$name" "${name#*_}"
done

这将删除名称中${name#*_}第一个名称之前的所有内容(包括名称中的第一个名称) 。_

这是假设您要处理的文件都与模式匹配*.csv

我添加了 a -i,以便您可以选择中止,如果这会导致文件丢失(例如,因为同时存在 aA_x.csvB_x.csv)。

相关内容