2010-11-13 37 views
0

Je passe une liste de fichiers à 7zip, cela ne semble pas plaire malgré le fait que ça fonctionne bien avec un chat.Obtenir 7zip pour accepter les arguments pipelés

find . -type f | grep -E '\.rar' | 7z -o/unrar/ #fails 
Error: 
Incorrect command line 

find . -type f | grep -E '\.rar' | cat 
//fullpath/file1.rar 
//fullpath/file2.rar 
//fullpath/file3.rar 

je pris le premier retour comme vous le voyez de chat et passé normalement à 7zip que je pense que le tube fait. Cela a fonctionné bien

7z -o/unrar //fullpath/file1.rar 

Peut-être que je devrais abandonner et juste utiliser le goudron? J'aime l'API pour 7zip un peu mieux.

Répondre

1

Vous attendez 7z pour lire les noms de fichiers à traiter à partir de l'entrée standard, pas la ligne de commande? Êtes-vous sûr de ne pas dire

7z -o/unrar $(find . -type f | grep -E '\.rar') 

ou quelque chose comme

find . -type f -a -name \*.rar -exec 7z -o/unrar \\{\\} \; 

qui trouvera tous les fichiers (de type f) qui correspondent aussi * .rar et appeler 7z sur chaque nom de fichier.

+0

Ill essayer, il semble que find -execdir serait la meilleure solution, mais je ne peux pas comprendre comment utiliser un lookbehind négatif avec leur évaluateur regex. D'après ce que je comprends des tuyaux bash, vous devriez être capable de les transmettre comme je l'ai fait dans la question. Peut-être que 7zip ne joue pas bien avec les tuyaux – Drew