感谢这个杰出的社区。请帮助我的第一篇文章!我一直在尝试编写命令来删除文件名的各个部分,但是在保持要删除的区域后的唯一标识符的同时无法弄清楚该如何做。这里是原始文件名的示例(我有一个这样的文件夹):
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
通过删除最后一个用空格分隔的字符串来进行两次拆分,然后删除.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'