Tellement stupide d'impatience que 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.. donc :
----> 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 cela 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 font moins d'un Go, et à première vue, il ne s'agit que d'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 🙂
Modifier :les fichiers ont en fait disparu, il ne reste que le dernier fichier à écrire, il a suffi d'un certain temps pour que les informations d'utilisation du disque se mettent à jour.. morale de l'histoire, exécutez vos scripts sur des fichiers fictifs avant !
Réponse acceptée :
Je pense que c'est le problème :vous auriez dû créer les répertoires A, B, C … Z. Si vous l'avez fait, le mv
La commande aurait dû déplacer les fichiers vers ces répertoires.
Mais sinon, le mv
La commande déplace les fichiers vers des fichiers portant ces noms, A, B, C… et je pense que c'est ce que vous avez fait.
Pour rendre le shellscript plus sûr, vous devez lui faire créer les répertoires (s'ils n'y sont pas déjà) avant de commencer le déplacement.
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)
for dir in "${dirs[@]}"
do
mkdir -p $dir
done
Si vous voulez que les choses deviennent encore plus sûres, vous pouvez également utiliser mv
avec le -i
possibilité
-i, --interactive
prompt before overwrite