Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1092 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  déplacement en conservant le nom de dossier qui précède

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

déplacement en conservant le nom de dossier qui précède

n°1459578
Lylandra
Posté le 16-01-2021 à 17:02:05  profilanswer
 

Bonjour et meilleurs vœux.
Je parviens à décompresser des archives par lot, mais voudrais ensuite déplacer ces archives dans un autre dossier, qui garde le nom de dossier dans lequel était l'archive.
 
Mes instructions :
 
dst_dir=/Volumes
cd $dst_dir/decomp
find ./ \( -name '*.zip' \) -exec unzip -o {} -d {}0 \; -exec mv {} $dst_dir/archiv/ \;
 
Exemple :
 
à partir des archives
/Volumes/decomp/alien/alien-01.zip
/Volumes/decomp/alien/alien-02.zip
/Volumes/decomp/alien/humanoide-03.zip
/Volumes/decomp/brebis/brebis-01.zip
/Volumes/decomp/brebis/chevre-02.zip
 
Résultat obtenu avec le script pour l'instant :
 
/Volumes/decomp/alien/(contenu des archives alien-01 à humanoide-03)
/Volumes/decomp/brebis/(contenu des archives brebis-01 à chevre-02)
/Volumes/archiv/alien-01.zip
/Volumes/archiv/alien-02.zip
/Volumes/archiv/humanoide-03.zip
/Volumes/archiv/brebis-01.zip
/Volumes/archiv/chevre-02.zip
 
Résultat escompté :
 
/Volumes/decomp/alien/(contenu des archives alien-01 à humanoide-03)
/Volumes/decomp/brebis/(contenu des archives brebis-01 à chevre-02)
/Volumes/archiv/alien/alien-01.zip
/Volumes/archiv/alien/alien-02.zip
/Volumes/archiv/alien/humanoide-03.zip
/Volumes/archiv/brebis/brebis-01.zip
/Volumes/archiv/brebis/chevre-02.zip
 
Si vous voyez comment y parvenir, je suis tout ouïe :-)
Merci.


Message édité par Lylandra le 16-01-2021 à 19:32:16
mood
Publicité
Posté le 16-01-2021 à 17:02:05  profilanswer
 

n°1459582
kajoux
Posté le 16-01-2021 à 21:00:19  profilanswer
 

Pas sûr que ce soit le mieux de tout vouloir faire dans un seul find, mais un truc comme ça doit pouvoir marcher :

find . -type f -name '*.zip' -execdir sh -c 'unzip -o "$1" -d "$1"0; dir="$2/archiv/${PWD##*/}"; mkdir -p "$dir" && mv "$1" "$dir"' _ {} "$dst_dir" \;


À tester/débugueur/ajuster, mais l'idée est là.
 
Ça a l'air de marcher chez moi après un test rapide, par contre tel quel ça ne marchera que sur ta structure de répertoires particulière.
Si elle change, il faudra adapter le

dir="$2/archiv/${PWD##*/}"


Message édité par kajoux le 16-01-2021 à 21:11:49
n°1459595
Lylandra
Posté le 17-01-2021 à 14:39:46  profilanswer
 

J'ignorais, pour l'utilisation de pwd dans une variable. Du coup, ta commande semble une très bonne piste, probablement la meilleure :-)
J'aurais du préciser : C'est pas obligé que tout soit dans un seul find, ni sur une seule ligne. Je veux bien décomposer dans un script si c'est plus propre ... C'est juste que l'idée d'1 seul find pour les différentes opérations m'a semblé plus rapide que faire 1 find par opération. Me trompais-je ?
   
Grand Merci kajoux.

n°1459596
Lylandra
Posté le 17-01-2021 à 15:08:57  profilanswer
 

Résolu
Testé sur une vingtaine de cas, ta solution fonctionne parfaitement.
Merci encore kajoux.

n°1459600
kajoux
Posté le 17-01-2021 à 15:57:28  profilanswer
 

Lylandra a écrit :

J'aurais du préciser : C'est pas obligé que tout soit dans un seul find, ni sur une seule ligne. Je veux bien décomposer dans un script si c'est plus propre ... C'est juste que l'idée d'1 seul find pour les différentes opérations m'a semblé plus rapide que faire 1 find par opération. Me trompais-je ?


Non, c'est juste que je me disais que des choses pourraient être regroupées plutôt que de faire un -exec par fichier, quitte à faire deux find, ou à passer le résultat de find à une autre commande…
Mais finalement, c'est probablement pas si mal comme ça, car de toutes façons, il faut bien faire une commande unzip par archive, on ne peut pas tellement améliorer ça.
À partir de là, le reste est négligeable en temps de calcul.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  déplacement en conservant le nom de dossier qui précède

 

Sujets relatifs
Problème de permisision pour accès dossier en lecture via session live[Centos] Dossier partis en sucette
déplacer grande quantité de fichiers vers dossierProblème d'écriture sur dossier partagé avec Samba (Ubuntu)
[libvirt/KVM/Qemu] dossier partagé et droits d'accèsPb install après update noyau : pas de dossier build dans /lib/modules
[Resolu] Déverouiller définitivement le dossier www d'ubuntuPartage de dossier Qemu via samba (Guest = Host = Linux)
[RHEL7] Install avec Yum dans un dossier personnaliséScript de suppression de dossier
Plus de sujets relatifs à : déplacement en conservant le nom de dossier qui précède


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR