Script pour créer un dossier portant le même nom que fichier et déplacer le fichier dans un dossier

4

J'ai beaucoup de fichiers individuels:

/File 01.txt /Picture 02.png

Existe-t-il une commande de terminal qui ferait cela alors je me retrouve avec ceci:

/File 01/File 01.txt /Picture 02/Picture 02.png/

Je suis sur un Mac sous OS X 10.11.3

Cela semble très simple, mais je suis assez nouveau sur Mac et je ne connais pas vraiment Terminal ayant quitté Windows.

neildeadman
la source

Réponses:

5

Avant de commencer, je vous recommande vraiment de faire une sauvegarde du dossier sur lequel vous essayez de le faire.

cd dans le dossier que vous essayez d’opérer, puis:

for file in *; do
  if [[ -f "$file" ]]; then
    mkdir "${file%.*}"
    mv "$file" "${file%.*}"
  fi
done
  1. Boucle sur tous ( * ) les fichiers du dossier en cours.
  2. créer un dossier ( mkdir ) du fichier sans son extension ${file%.*}
  3. bouge toi ( mv ) le fichier dans ce dossier.

Notez que vous devez utiliser la citation car certains fichiers peuvent avoir des espaces dans leurs noms

Vous pouvez taper ceci dans le terminal ou créer un fichier de script.

Ammar Alammar
la source
INCROYABLE! Merci beaucoup. Est-il possible d’obtenir la boucle uniquement en boucle sur les fichiers et d’ignorer les répertoires existants?
neildeadman
Je devrais ajouter que cela fonctionne avec cela, mais provoque une erreur lors du traitement de chaque répertoire.
neildeadman
1
C'est facile! Vous avez juste besoin d'un if déclaration qui teste si $file est un dossier ou un fichier. J'ai modifié ma réponse pour refléter cela.
Ammar Alammar