Así que, impaciente, utilicé el siguiente script en mi servidor 19.04 en un intento de mover un montón de archivos de video a carpetas con prefijos:
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
No tengo idea de dónde salió mal, pero en lugar de mover los archivos a las carpetas fue a una salida singular ... entonces:
----> 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 <----
Afortunadamente detuve el proceso (CTRL + C) tan pronto como noté que no iba como estaba previsto y no revisé toda la carpeta.
Así que ahora tengo esos archivos A
y C
, que son menos de un GB, y por lo que parece son un solo video.
Hay 50 Gb no contabilizados en el uso total del disco de la carpeta en sí, pero el espacio total en disco de la computadora se ha mantenido igual. ¿Me haces pensar que los archivos no se eliminan?
Cualquier ayuda apreciada, gracias :)
Editar: los archivos se han ido, solo queda el último archivo que se escribió, todo lo que tomó fue un tiempo para que el disco usara la información para actualizar ... la moraleja de la historia, ¡ejecute sus scripts en archivos simulados antes!
mv "$file" "$dir/"
, con un final /
; entonces, si $dir
no existe, se mv
producirá un error en lugar de cambiar el nombre $file
a $dir
. También considere mv -i
y mv -n
. Y siempre haz una mkdir -p
antes de mudarte, por si acaso.
A
,B
etc., antes de ejecutar el script? Si no, simplemente cambió el nombre de los archivos. Todos los archivos cuyos nombres comenzaron cona
oA
han sido renombradosA
, por lo que solo sobrevivió el último archivo renombrado, los demás se sobrescriben. ¡Llamar a una variabledir
no crea un directorio!