2016-11-12 1 views
-1

J'ai 1 500 archives 7zip, chaque archive contient 2 à 10 fichiers, sans sous-répertoires.Extraire exactement un fichier (quelconque) de chaque archive 7zip, en vrac (Unix)

Chaque fichier a la même extension, mais le nom de fichier varie.

Je veux seulement un fichier de chaque archive, mais j'aimerais le faire en masse. Peu importe quel fichier est retiré, tant qu'un seul fichier est sorti. Ça peut être le premier fichier, le plus récent, le plus grand, le plus petit, ça n'a pas d'importance.

Voici un exemple:

aa.7z {blah 56.smc, blah 57.smc, 1 blah 58.smc} 
ab.7z {xx.smc, xx 1.smc, xx_2.smc} 
ac.7z {1.smc} 

Je veux courir quelque chose d'équivalent à:

7z e *.7z # But somehow only extract one file 

Merci!

+1

Vous devrez lister l'archive, analyser la sortie pour sélectionner un fichier. –

+0

Merci - J'ai essayé ceci en utilisant 7z l (l est pour la liste) mais il ne sort pas dans un format qui est facile à utiliser, sans parler de pipe-able. Sauf s'il y a une sorte de 7z l parseur ... – MattWithoos

Répondre

0

En fin de compte ma solution était d'extraire tous les fichiers et exécutez la commande suivante dans le répertoire:

for n in *; do echo "$n"; done > files.txt 

J'ai importé alors cette liste dans Excel, et diviser les fichiers par un caractère spécial qui a divisé le titre du fichier avec les données de qualification à l'intérieur du nom de fichier (par exemple: Some Title (V1) [X2] .smc), spécifiquement j'ai utilisé un séparateur de parenthèses.

Ensuite, j'ai supprimé tous les doublons, en me laissant avec une seule édition de chaque de la fermeture éclair. J'ai finalement refondu les colonnes (malheureusement le support a été supprimé pendant le fractionnement, donc j'ai écrit une fonction pour le rajouter à la condition de savoir s'il y avait du contenu dans la colonne suivante) puis j'ai réenregistré le fichier files.txt, après avoir passé en revue StackOverflow , les fichiers supprimés en fonction d'un fichier d'entrée (fichiers.txt). Un mot d'avertissement à ce sujet, les espaces dans les noms de fichiers causent des problèmes avec rm et xargs, donc j'ai dû encapsuler la variable avec des guillemets. En fin de compte, cela ne m'a toujours pas assez bien servi, alors j'ai simplement utilisé une ressource entièrement différente.

En postant cette réponse, les autres personnes se trouvant dans une situation similaire trouvent une autre solution.