Commande
Cette commande a été testée dans un shell bash.
for x in *;do if [[ -f $x ]];then mkdir newdir;mv "$x" newdir/.;mv newdir "${x%.*}";fi;done
Explication
Le code ci-dessous n'est pas une série de commandes à exécuter. Il s'agit plutôt d'une explication des différentes parties du code montré ci-dessus.
Boucler à travers tous les noms de fichiers dans le répertoire actuel.
for x in *;do ... done
Ne traiter que les fichiers réguliers. (Ignorer les répertoires.)
if [[ -f $x ]];then ... fi;
Créer un nouveau répertoire newdir
.
mkdir "newdir";
Déplacer le fichier x
dans le nouveau répertoire newdir
.
mv "$x" newdir/.;
Renommer newdir
avec le nom du nouveau répertoire souhaité. (Définir newdir
sur le nom du fichier x
après avoir supprimé le dernier .
et tous les caractères qui suivent.)
mv newdir "${x%.*}";
Commentaires
Si le répertoire souhaité existe déjà, alors le dossier newdir
(contenant le fichier) sera déplacé vers le répertoire souhaité. Par exemple, si le fichier 123.mp4
et le répertoire 123
existent déjà, alors le fichier 123.mp4
finira dans 123/newdir
. Vous pouvez vérifier si cela s'est produit en entrant la commande ci-dessous.
find . -name newdir
Par exemple, si 123/newdir/123.mp4
existait, alors la sortie suivante apparaitrait.
./123/newdir