GNU/Linux >> Tutoriels Linux >  >> Linux

créer un répertoire à partir du nom de fichier et déplacer bash

Aucun espace n'est autorisé autour du = dans un devoir.

dir="${file%%.*}"

Inversement, un espace blanc est requis dans un test.

if [ -e $dir ]; then
    ^       ^

En ce qui concerne les améliorations stylistiques, cela ne fait pas de mal de faire un mkdir -p inutile , vous pouvez donc vous débarrasser du if déclaration.

Les citations ne sont pas obligatoires dans un devoir, vous pouvez donc les supprimer du dir= ligne. Les guillemets sont une bonne idée partout ailleurs, alors ne supprimez pas les autres guillemets.

Il serait peut-être bon d'ajouter un .* supplémentaire à la boucle for. De cette façon, si vous exécutez le script plus d'une fois, il n'essaiera pas de déplacer ces sous-répertoires nouvellement créés. Et une bonne astuce (mais pas nécessairement une amélioration) consiste à raccourcir BR*.* W0*.* à {BR,W0}*.* .

for file in {BR,W0}*.*; do
    dir=${file%%.*}
    mkdir -p "$dir"
    mv "$file" "$dir"
done

Linux
  1. Comment déplacer tous les fichiers (y compris cachés) d'un répertoire à un autre ?

  2. Obtenir le chemin complet depuis le script Bash ?

  3. Commande de déplacement de répertoire Linux

  4. Comment déplacer (et écraser) tous les fichiers d'un répertoire à un autre ?

  5. Création d'une arborescence de répertoires complète à la fois

Supprimez tous les caractères spéciaux et la casse de la chaîne dans bash

Création de classes et d'objets à l'aide de scripts bash

Linux Bash :Déplacez plusieurs fichiers différents dans le même répertoire

Exporter une variable de bash et l'utiliser en Python

Empêcher 10.2 de créer le répertoire Wolfram Mathematica sous Linux

Comment déplacer tous les fichiers du répertoire courant vers le répertoire supérieur ?