Linux 基于bash中的前缀将文件移动到子文件夹
我目前有一长串文件,看起来有点像这样:Linux 基于bash中的前缀将文件移动到子文件夹,linux,bash,shell,command-line,Linux,Bash,Shell,Command Line,我目前有一长串文件,看起来有点像这样: Gmc_W_GCtl_E_Erz_Aue_Dl_281_heart_xerton Gmc_W_GCtl_E_Erz_Aue_Dl_254_toe_taixwon Gmc_W_GCtl_E_Erz_Homersdorf_Dl_201_head_xaubadan Gmc_W_GCtl_E_Erz_Homersdorf_Dl_262_bone_bainan Gmc_W_GCtl_E_Thur_Peuschen_Dl_261_blood_blodan Gmc_W_
Gmc_W_GCtl_E_Erz_Aue_Dl_281_heart_xerton
Gmc_W_GCtl_E_Erz_Aue_Dl_254_toe_taixwon
Gmc_W_GCtl_E_Erz_Homersdorf_Dl_201_head_xaubadan
Gmc_W_GCtl_E_Erz_Homersdorf_Dl_262_bone_bainan
Gmc_W_GCtl_E_Thur_Peuschen_Dl_261_blood_blodan
Gmc_W_GCtl_E_Thur_Peuschen_Dl_281_heart_xerton
$ find . -type f | awk -F_ '{system("mkdir -p "$5"/"$6";mv "$0" "$5"/"$6)}'
命名模式都遵循相同的顺序,我主要是根据“Aue”、“Homersdorf”、“Peuschen”等部件对文件进行分组(列表中还有许多其他部件),这些关键字的位置总是相同的(例如,它们后面都是Dl;它们都在第五个下划线之后……等等)
所有文件都在同一个文件夹中,我正试图根据bash中的这些关键字将这些文件移动到子文件夹中,但我不太确定如何移动。在此方面的任何帮助都将不胜感激,谢谢 我猜你想要这样的东西:
Gmc_W_GCtl_E_Erz_Aue_Dl_281_heart_xerton
Gmc_W_GCtl_E_Erz_Aue_Dl_254_toe_taixwon
Gmc_W_GCtl_E_Erz_Homersdorf_Dl_201_head_xaubadan
Gmc_W_GCtl_E_Erz_Homersdorf_Dl_262_bone_bainan
Gmc_W_GCtl_E_Thur_Peuschen_Dl_261_blood_blodan
Gmc_W_GCtl_E_Thur_Peuschen_Dl_281_heart_xerton
$ find . -type f | awk -F_ '{system("mkdir -p "$5"/"$6";mv "$0" "$5"/"$6)}'
这将使用带有for循环的
bash
shell将sayGmc\u W\u GCtl\u E\u Erz\u Aue\u Dl\u heart\u xerton
移动到/Erz/Aue/Gmc\u W\u GCtl\u E\u Erz\u Aue\u Dl\u heart\u xerton
#!/usr/bin/env bash
shopt -s nullglob
for file in Gmc*; do
[[ -d $file ]] && continue
IFS=_ read -ra dir <<< "$file"
echo mkdir -pv "${dir[4]}/${dir[5]}" || exit
echo mv -v "$file" "${dir[4]}/${dir[5]}" || exit
done
#/usr/bin/env bash
shopt-s nullglob
用于Gmc*中的文件;做
[[-d$file]]&继续(&C)
IFS=uu读取-ra目录