我有一堆文件..这里有一些。还有数百个。
2019-02-08-07-32-00_UM8305_H.PDF 2019-03-17-17-59-59_UM8305_H.PDF 2019-05-05-23-59-59_UM8305_H.PDF 2019-07-08-12-31-57_UM8305_W.PDF 2019-08-20-00-01-52_UM8305_H.PDF 2019-11-07-08-26-51_UM8305_H.PDF
2019-02-08-10-07-45_UM8305_W.PDF
我想将 的第 10 个索引替换"-"
为"_"
.我更改了所有文件以替换'_'
with '-'
,然后再次重命名它,因此'_'
将是'_UM8305_W.PDF'
and '_UM8305_H.PDF'
。现在我无法在网上找到一种方法来替换'-'
特定情况下的 。我想找到所有'-'
并替换第 3、6 和 7 个位置(如果它们都是 )'-'
。我只是使用重命名来替换它,但不能这样做,因为有数千个具有不同月份和日期的文件,并且替换不能有效地做到这一点。
答案1
该解决方案使用参数扩展。它假设文件名具有相同的长度并遵循某种模式,在本例中:YYYY-MM-DD-HH-MM-SS_rest_of_string.PDF
for f in *.PDF; do
mv $f ${f:0:10}_${f:11}
done
${f:0:10}
从字符串的开头到第十个字符。
从那里添加_
并打印从十二个字符到末尾的内容:
_${f:11}
由于字符数是从 0 开始的,因此 11 表示第 12 个字符。