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 Aet 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 $dirn'existe pas, mvsera erreur au lieu de renommage $fileà $dir. Considérez également mv -iet mv -n. Et faites toujours un mkdir -pavant de bouger, pour faire bonne mesure.
A,Betc., existaient-ils avant d'exécuter le script? Sinon, vous venez de renommer les fichiers. Tous les fichiers dont les noms ont commencé paraouAont été renommésA, donc seul le dernier fichier renommé a survécu, les autres sont remplacés. Appeler une variabledirne crée pas de répertoire!