我有成千上万个文件需要移到不同的文件夹中。文件名是: a_b_c001_1_aug_03_08.09.41.34.tif a_b_c001_1_aug_03_08.29.16.33.tif a_b_c002_1_aug_03_08.59.31.21.tif a_b_c002_1_aug_03_07.19.51.33.tif a_b_c002_1_aug_03_07.55.11.54.tif ...... a_b_c163_1_aug_03_08.09.11.34.tif
我想创建文件夹c001,c002,...,c163,并移动a_b_c001_1_aug_03_08.09.41.34.tif 将a_b_c001_1_aug_03_08.29.16.33.tif移至文件夹c001中,将a_b_c002_1_aug_03_08.59.31.21.tif 将a_b_c002_1_aug_03_07.19.51.33.tif移至文件夹c002,将a_b_c163_1_aug_03_08.09.11.34.tif移至文件夹c163。
有人可以帮我弄清楚如何为此编写脚本吗?我对编码了解甚少,我知道可能需要使用for循环,但是对于我来说,此任务太难了。预先感谢。
答案 0 :(得分:0)
如果您的所有文件名都具有相同的格式并且只有3位数字,这是一种简便的方法:
for i in *.tif; do folder=${i:4:4}; mkdir -p $folder; cp $i $folder;done
如果您在c后面有3个以上的数字,则可以尝试以下方式:
for i in *.tif; do
folder=${i:4}
under="_"
rest=${folder#*$under}
folder=${folder:: $(( ${#folder} - ${#rest} - ${#under} ))}
mkdir -p $folder
cp $i $folder
done
如果您的前缀不总是a_b_或类似的前缀,则将不起作用。但是您可以改善它。