Responda em construção, por favor, seja paciente:)
Como isso funciona
Crie um arquivo chamado makeDirs.sh
, copie o script abaixo no arquivo, salve e torne o script executável com chmod +x /path/to/makeDirs.sh
LEMBRE-SE DE TER BACKUPS ANTES DE EXECUTAR QUALQUER SCRIPT
Chame o script com o diretório no qual você deseja operar como argumento de linha de comando. Demonstração
Script
#!/bin/bash
OPERATINGDIR="$1"
mkdir "$OPERATINGDIR/TMP"
find "$OPERATINGDIR" -maxdepth 1 -type f | while IFS= read FILE
do
printf " operating on $FILE. Moving to TMP dir\n"
mv "$FILE" "$OPERATINGDIR/TMP"
FULLBASENAME="$(basename "$FILE" )"
CROPPEDBASENAME="$( basename "$FILE" | awk -F'.' '{ for(i=1;i<NF;i++) printf $i FS }' )"
printf "Cropped basename is %s\n Full basename %s\n" "$CROPPEDBASENAME" "$FULLBASENAME"
# test if we have basename-directory made
[ -d "$OPERATINGDIR"/"$CROPPEDBASENAME" ] || mkdir "$OPERATINGDIR"/"$CROPPEDBASENAME" && printf "created "$OPERATINGDIR"/"$CROPPEDBASENAME" "
printf "Moving $FILE from TMP folder to "$OPERATINGDIR"/"$CROPPEDBASENAME" \n"
mv "$OPERATINGDIR"/TMP/"$FULLBASENAME" "$OPERATINGDIR"/"$CROPPEDBASENAME"
printf "\n\n"
done