2017-09-15 3 views
0

Je ces fichiers:de script Bash pour transférer tous les fichiers du répertoire courant dans le répertoire spécifique basé sur le nom

  1. 100-1.jpg
  2. 100-2.jpg
  3. 200-1.jpg
  4. 200-2.jpg

Je veux que ces soient transférés vers un dossier spécifique basé sur le nom de fichier

  1. 100/100-1.jpg
  2. 100/100-2.jpg
  3. 200/200-1.jpg
  4. 200/200-2.jpg

Comment puis-je fais ça?

Ce que j'ai essayé jusqu'à présent

cd ~/images 
for f in *.jpg 
do 
    mv -v "$f" ~/images/${f}/${f%}.jpg 
done 

comment puis-je sais que je coupe la chaîne avant le tableau de bord 200-1 à 200 par exemple et stocker dans une variable?

donc je peux le faire comme ce

cd ~/images 
    for f in *.jpg 
    name="$f without the .jpg" 
    do 
     mv -v "$f" ~/images/${f}/${f%}.jpg 
    done 
+0

Qu'avez-vous essayé jusqu'à présent? –

+0

vous y êtes presque, passez à 'echo mv -v" $ f "~/images /" $ {f% - *} "/" $ {f} "'. Si cela résonne le cmd correct pour tous les fichiers, alors retirez 'echo'. Bonne chance. – shellter

+0

wow cela fonctionne. Merci – Kenneth

Répondre

1
#!/bin/bash 
cd ~/images 
for f in *.jpg 
do 
    mkdir -p ${f%-*} 
    echo ${f%-*} 
    mv "$f" ~/images/${f%-*}/${f%} 
done