(我在 Bash 环境中,Windows 机器上的 Cygwin,使用 awk、sed、grep、perl 等...)我想将最后一个文件夹名称添加到文件名中,就在最后一个下划线 (_) 之前如果文件名中没有数字,则按数字或在末尾。
这是我所拥有的示例(需要重新组织数百个文件):
./aaa/A/C_17x17.p
./aaa/A/C_32x32.p
./aaa/A/C.p
./aaa/B/C_12x12.p
./aaa/B/C_4x4.p
./aaa/B/C_A_3x3.p
./aaa/B/C_X_91x91.p
./aaa/G/C_6x6.p
./aaa/G/C_7x7.p
./aaa/G/C_A_113x113.p
./aaa/G/C_A_8x8.p
./aaa/G/C_B.p
./aab/...
我想像这样重命名所有这些文件:
./aaa/C_A_17x17.p
./aaa/C_A_32x32.p
./aaa/C_A.p
./aaa/C_B_12x12.p
./aaa/C_B_4x4.p
./aaa/C_A_B_3x3.p
./aaa/C_X_B_91x91.p
./aaa/C_G_6x6.p
./aaa/C_G_7x7.p
./aaa/C_A_G_113x113.p
./aaa/C_A_G_8x8.p
./aaa/C_B_G.p
./aab/...
我用 sed 尝试了很多 bash for 循环,最后一个如下:
IFS=$'\n'
for ofic in `find * -type d -name 'A'`; do
fic=`echo $ofic|sed -e 's/\/A$//'`
for ftr in `ls -b $ofic | grep -E '.png$'`; do
nfi=`echo $ftr|sed -e 's/(_\d+[x]\d+)?/_A\1/'`
echo mv \"$ofic/$ftr\" \"$fic/$nfi\"
done
done
但是没有成功...这\1
没有插入$nfi
...这是我尝试的最后一个,仅在 1 个文件夹(这是一个巨大的文件夹集合的子文件夹)上工作,经过 60 多分钟的不成功试验,我和你们在一起。