GNU/Linux >> Tutoriels Linux >  >> Linux

Erreur Shell 'tar :introuvable dans l'archive' lors de l'utilisation d'une expression régulière

Lorsque vous écrivez :

tar -xf *.gz

le tar commande voit (par exemple) :

tar -xf abc.tar.gz def.tar.gz ghi.tar.gz

Ceci est interprété comme une demande d'extraction de def.tar.gz et ghi.tar.gz de l'archive abc.tar.gz . Comme les fichiers ne s'y trouvent pas, vous obtenez le message d'avertissement.

En d'autres termes, tar fonctionne sur un seul tar fichier (éventuellement compressé) à la fois (en une seule invocation). Il ne fonctionne pas sur plusieurs fichiers tar.

Notez que si abc.tar.gz contient un fichier pqr/xyz/important.c , vous pouvez extraire un seul fichier en spécifiant :

tar -xf abc.tar.gz pqr/xyz/important.c

La notation que vous avez utilisée n'est qu'une variante de cette notation.

(Et oui, il peut y avoir des raisons de tar un tar dossier. Par exemple, Gmail ne vous permet pas d'expédier un fichier tar ou un fichier tar compressé contenant un fichier exécutable. Cependant, si vous intégrez un fichier tar compressé à l'intérieur d'un fichier tar non compressé, il ne regarde pas à l'intérieur du fichier interne pour trouver le fichier exécutable. Je l'utilise quand j'ai besoin d'expédier un fichier tar avec un exécutable configure script.)


la raison principale est tar prend un seul argument de nom de fichier. Lorsque vous appelez le tar *.tgz bash étend le * à tous les noms de fichiers avec le formant tgz et cela devient tar file1 file2 file3 qui n'est pas accepté par tar . Donc soit vous utilisez une boucle for comme for i in *.tgz; do tar -zxvf $i ;done ou utilisez une autre commande qui exécute tar comme effet secondaire comme indiqué dans les commentaires, est ls ou find . -maxdepth 1 -name \*tgz -exec tar -zxvf {} \; (ls la sortie est toujours risquée)


Lorsque vous écrivez

 tar -xzf *.gz

votre shell le développe en chaîne :

 tar -xzf 1.gz 2.gz 3.gz

(en supposant que 1.gz, 2.gz et 3.gz sont dans votre répertoire actuel).

tar pense que vous voulez extraire 2.gz et 3.gz à partir de 1.gz; il ne peut pas trouver ces fichiers dans les archives et cela provoque le message d'erreur.

Vous devez utiliser la boucle for de la commande xargs pour extraire vos fichiers.

ls *.gz |xargs -n1 tar -xzf

Cela signifie :exécutez-moi tar -xzf pour chaque gz -file dans le répertoire courant.


Linux
  1. Erreur tar :EOF inattendu dans l'archive

  2. tar :l'erreur n'est pas récupérable :sortie maintenant

  3. libevent introuvable erreur dans tmux

  4. Afficher la correspondance trouvée ou non en utilisant awk

  5. commande introuvable lors de l'utilisation de sudo

Dépannage de l'erreur "Bash :Commande introuvable" sous Linux

If…else…if Statement (erreur de commande introuvable) ?

Tableau dans Bash introuvable

FATAL :erreur de module introuvable à l'aide de modprobe

Module introuvable lorsque je fais un modprobe

sshpass :erreur de commande introuvable