从文件名列表中删除节,同时使用Bash Command删除节后保留唯一的标识符

问题描述 投票:0回答:1

感谢这个杰出的社区。请帮助我的第一篇文章!我一直在尝试编写命令来删除文件名的各个部分,但是在保持要删除的区域后的唯一标识符的同时无法弄清楚该如何做。这里是原始文件名的示例(我有一个这样的文件夹):

101 OD_1_20x_L Rho GFP__01.vsi-宏图像-C = 0.tif

101 OD_1_20x_L Rho GFP__01.vsi-宏图像-C = 1.tif

101 OD_1_20x_L Rho GFP__01.vsi-宏图像-C = 2.tif

101 OD_1_20x_L Rho GFP__02.vsi-C = 0.tif

101 OD_1_20x_L Rho GFP__02.vsi-C = 1.tif

101 OD_1_20x_L Rho GFP__02.vsi-C = 2.tif

以及期望的结果:

101 OD_1_20x_L Rho GFP__01- C = 0.tif

101 OD_1_20x_L Rho GFP__01- C = 1.tif

101 OD_1_20x_L Rho GFP__01- C = 2.tif

101 OD_1_20x_L Rho GFP__02- C = 0.tif

101 OD_1_20x_L Rho GFP__02- C = 1.tif

101 OD_1_20x_L Rho GFP__02- C = 2.tif

我一直在以下使用变体,但尚未找到在每个文件末尾保留唯一C =#。tif的方法。

for f in ./*; do mv "$f" "$f%.vsi*C=*.tif}.tif" ; done 
for f in ./*; do mv "$f" "${f%.vsi*}C=*.tif" ; done
regex bash rename filenames batch-processing
1个回答
0
投票

通过删除最后一个用空格分隔的字符串来进行两次拆分,然后删除.vsi部分

这样的东西

for f in *.tif; do
    echo mv -v "$f" "${f%.vsi*} - ${f##* }"
done

如果您认为输出正确,则删除echo

这是没有echo的输出

renamed '101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=0.tif' -> '101 OD_1_20x_L Rho GFP__01 - C=0.tif'
renamed '101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=1.tif' -> '101 OD_1_20x_L Rho GFP__01 - C=1.tif'
renamed '101 OD_1_20x_L Rho GFP__01.vsi - macro image - C=2.tif' -> '101 OD_1_20x_L Rho GFP__01 - C=2.tif'
renamed '101 OD_1_20x_L Rho GFP__02.vsi - C=0.tif' -> '101 OD_1_20x_L Rho GFP__02 - C=0.tif'
renamed '101 OD_1_20x_L Rho GFP__02.vsi - C=1.tif' -> '101 OD_1_20x_L Rho GFP__02 - C=1.tif'
renamed '101 OD_1_20x_L Rho GFP__02.vsi - C=2.tif' -> '101 OD_1_20x_L Rho GFP__02 - C=2.tif'
© www.soinside.com 2019 - 2024. All rights reserved.