Por isso, muitíssimo impaciente, usei o seguinte script no meu servidor 19.04, na tentativa de mover vários arquivos de vídeo para pastas com prefixos:
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done
Nenhuma pista de onde deu errado, mas, em vez de mover os arquivos para as pastas, foi para uma saída singular .. então:
----> a1.ts moves into -> A <----
----> a2.ts moves into -> A <----
----> a3.ts moves into -> A <----
----> a4.ts moves into -> A <----
----> a5.ts moves into -> A <----
----> c1.ts moves into -> C <----
----> c2.ts moves into -> C <----
----> c3.ts moves into -> C <----
----> c4.ts moves into -> C <----
----> c5.ts moves into -> C <----
Felizmente, parei o processo (CTRL + C) assim que percebi que não estava indo como o esperado e não passei por toda a pasta.
Então agora eu tenho esses arquivos A
e C
, que são menores que um Gb, e pela aparência dele é um vídeo ÚNICO.
Existem 50 GB não contabilizados no uso total do disco da própria pasta, mas o espaço total em disco do computador permaneceu o mesmo. Me fazendo pensar que os arquivos não foram excluídos?
Qualquer ajuda apreciada, obrigado :)
Editar: os arquivos acabaram, apenas o último arquivo a ser gravado permanece, bastou algum tempo para que as informações de uso do disco fossem atualizadas .. moral da história, execute seus scripts em arquivos simulados antes!
mv "$file" "$dir/"
, com um final /
; se $dir
não existir, mv
ocorrerá um erro em vez de renomear $file
para $dir
. Considere também mv -i
e mv -n
. E sempre faça um mkdir -p
antes de mover, para uma boa medida.
A
,B
e assim por diante existia antes de executar o script? Caso contrário, você apenas renomeou os arquivos. Todos os arquivos cujos nomes começarama
ouA
foram renomeadosA
, portanto, apenas o último arquivo renomeado sobreviveu, os outros são substituídos. Chamar uma variáveldir
não cria um diretório!