(私は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 ループを試しましたが、最後の 1 つは次のとおりです。
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分以上失敗した試行の後です、 私はあなたたちと一緒にここにいます。