2017-07-23 3 views
-3

Je suis nouveau à travailler dans le shell et peut utiliser la commande unrar pour extraire une seule archive mais je cherche à faire beaucoup plus de cela. Laisse-moi expliquer.Archive Extraction Script

Ex:

/ParentFolder/ChildFolder1/xyz.rar 

/ParentFolder/ChildFolder2/abc.rar 

/ParentFolder/ChildFolder3/rty.rar 

/ParentFolder/ChildFolder4/wqe.rar 

Chaque dossier enfant a des noms différents, contenant chacun des archives nommées différemment. Je voudrais construire un script qui va extraire les archives dans chaque dossier enfant, et renommer le fichier extrait au même nom que le dossier.

BONUS: Chaque dossier enfant a des archives qui sont répertoriés comme

archivename.r01 

archivename.r02 

archivename.rar 

S'il est possible de supprimer toute la structure d'archivage après extraction qui serait incroyable.

Espérons que je l'ai expliqué assez bien. Merci d'avance!

+5

Vous devriez probablement essayer quelque chose d'abord et expliquer ce que vous rencontrez des problèmes avec, sinon cette question sonne comme une demande de quelqu'un pour faire du développement sans script. –

+0

Votre exemple "d'entrée" est très bon (à savoir '' /ParentFolder/ChildFolder1/xyz.rar .....). Modifiez votre Q pour montrer ce que vous souhaitez comme résultat final et nous ne devinerons pas ce que vous voulez dire. Bonne chance. – shellter

Répondre

0
find /ParentFolder -name "*.rar" -exec unrar '{}' \; 

Recherchez tous les fichiers d'archive dans la structure de répertoire et ignorez.

find /ParentFolder ! -name "*.rar" | awk -F \/ '{ split($4,fle,".");system("mv "$0" "$2"/"$3"/"$3"."fle[2]) }' 

Si l'on suppose qu'il n'y a pas d'autres fichiers déjà présents dans la structure des répertoires, les fichiers non archivés ne seront pas les fichiers avec l'extension rar et donc chercher tous ces fichiers sans rar comme une extension et envoyer les résultats par awk, en utilisant la fonction du système pour renommer le fichier avec mv. Enfin, exécutez la commande find pour tous les fichiers rar et exécutez la commande rm -f pour les supprimer.

+0

MERCI BEAUCOUP !! Votre premier je devais juste ajouter un "x" à côté de unrar et son faire son travail !!!! –