Donc, stupide et impatient, j'ai utilisé le script suivant sur mon serveur 19.04 pour tenter de déplacer un tas de fichiers vidéo dans des dossiers avec des préfixes:
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
Aucune idée de l'endroit où cela s'est mal passé, mais au lieu de déplacer les fichiers vers des dossiers, il est allé vers une sortie singulière.
----> 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 <----
Heureusement, j'ai arrêté le processus (CTRL + C) dès que j'ai remarqué que ça ne se passait pas comme prévu et que je n'ai pas parcouru tout le dossier.
Alors maintenant, j'ai ces fichiers A
et C
, qui sont moins d'un Go, et à première vue, c'est une seule vidéo.
Il y a 50 Go non comptabilisés dans l'utilisation totale du disque du dossier lui-même, mais l'espace disque global de l'ordinateur est resté le même. Me faisant penser que les fichiers ne sont pas supprimés?
Toute aide appréciée, merci :)
Edit: les fichiers sont réellement partis, il ne reste que le dernier fichier à écrire, il a juste fallu un certain temps pour que les informations d'utilisation du disque se mettent à jour .. moral de l'histoire, exécutez vos scripts sur des fichiers fictifs avant!
mv "$file" "$dir/"
, avec un suivi /
; alors si $dir
n'existe pas, mv
sera erreur au lieu de renommage $file
à $dir
. Considérez également mv -i
et mv -n
. Et faites toujours un mkdir -p
avant de bouger, pour faire bonne mesure.
A
,B
etc., existaient-ils avant d'exécuter le script? Sinon, vous venez de renommer les fichiers. Tous les fichiers dont les noms ont commencé para
ouA
ont été renommésA
, donc seul le dernier fichier renommé a survécu, les autres sont remplacés. Appeler une variabledir
ne crée pas de répertoire!