linux - insère une liste numérotée de fichiers au milieu d'une autre liste de fichiers numérotés


2

J'ai un dossier (apple) contenant des fichiers

doc001.jpg
doc002.jpg
...
doc010.jpg, 

Un autre dossier (banane) contient également des fichiers

doc001.jpg   
...
doc150.jpg  

Comment puis-je insérer le contenu de pomme dans la banane au milieu en les renommant? Alors que le dossier banane a ses fichiers existants jusqu’à doc050.jpg puis

apple/doc001.jpg

devient

banana/doc051.jpg 

et en avant, et le précédent banana/doc051.jpg à travers banana/doc150.jpg être renommé banana/doc060.jpg à travers banana/doc160.jpg?

Réponses:


2

Ce n’est pas la solution la plus élégante, mais elle est facile à comprendre et devrait fonctionner:

  1. Faire un nouveau dossier banane

    mkdir banana.new
    
  2. Copiez les 50 premiers fichiers sur (c’est un peu plus difficile qu’il serait nécessaire à cause de la 0 s):

    for i in {1..9}; do cp banana/doc00$i.jpg banana.new/; done
    for i in {10..50}; do cp banana/doc0$i.jpg banana.new/; done
    
  3. Récupère les fichiers d'Apple et les renomme

    i=51; find apple/ -type f | sort | \
      while read n; do cp $n banana.new/doc0$i.jpg; let i++; done 
    
  4. Récupérez le reste des fichiers de banana et renommez-les

    for i in {51..89}; do \
      let n=$i+10; cp banana/doc0$i.jpg banana.new/doc0$n.jpg; done
    for i in {90..99}; do \
     let n=$i+10; echo "cp banana/doc0$i.jpg banana.new/doc$n.jpg"; done
    for i in {100..150}; do \
     let n=$i+10; cp banana/doc$i.jpg banana.new/doc$n.jpg; done
    

À ce point, banana.new devrait être exactement comme vous le voulez. Assurez-vous que c'est puis renommez le en banana.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.