GNU/Linux >> Tutoriales Linux >  >> Linux

Error de Shell 'tar:no encontrado en el archivo' al usar una expresión regular

Cuando escribes:

tar -xf *.gz

el tar el comando ve (por ejemplo):

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

Esto se interpreta como una solicitud para extraer def.tar.gz y ghi.tar.gz del archivo abc.tar.gz . Dado que los archivos no están allí, aparece el mensaje de advertencia.

En otras palabras, tar opera en un único tar archivo (posiblemente comprimido) a la vez (en una invocación). No funciona en varios archivos tar.

Tenga en cuenta que si abc.tar.gz contiene un archivo pqr/xyz/important.c , puede extraer solo un archivo especificando:

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

La notación que usó es solo una variante de esta notación.

(Y sí, puede haber razones para tar un tar expediente. Por ejemplo, Gmail no le permite enviar un archivo tar o un archivo tar comprimido con gzip que contenga un archivo ejecutable. Sin embargo, si incrusta un archivo tar comprimido con gzip dentro de un archivo tar no comprimido, no busca dentro del archivo interno para encontrar el archivo ejecutable. Lo uso cuando necesito enviar un archivo tar con un ejecutable configure guión.)


la razón principal es tar toma un solo argumento de nombre de archivo. Cuando llamas al tar *.tgz bash extiende el * a todos los nombres de archivo con formato tgz y se convierte en tar file1 file2 file3 que no es aceptado por tar . Entonces, o usas un bucle for como for i in *.tgz; do tar -zxvf $i ;done o use algún otro comando que ejecute tar como efecto secundario como se muestra en los comentarios, es ls o find . -maxdepth 1 -name \*tgz -exec tar -zxvf {} \; (ls la salida siempre es arriesgada)


Cuando escribes

 tar -xzf *.gz

su caparazón lo expande a la cadena:

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

(suponiendo que 1.gz, 2.gz y 3.gz estén en su directorio actual).

tar piensa que quieres extraer 2.gz y 3.gz de 1.gz; no puede encontrar estos archivos en los archivos comprimidos y eso provoca el mensaje de error.

Necesitas usar el bucle for del comando xargs para extraer sus archivos.

ls *.gz |xargs -n1 tar -xzf

Eso significa:ejecútame tar -xzf por cada gz -archivo en el directorio actual.


Linux
  1. ¿Cuándo aparece el mensaje de error "trabajos:no encontrado"?

  2. FATAL:Error de módulo no encontrado usando modprobe

  3. libevent no encontrado error en tmux

  4. sshpass:error de comando no encontrado

  5. ¿Cómo excluir archivos del archivo TAR usando expresiones regulares?

Solución de problemas del error "Bash:Comando no encontrado" en Linux

If…else…if Declaración (error de comando no encontrado)?

tar:el error no es recuperable:salir ahora

Módulo no encontrado cuando hago un modprobe

Mostrar coincidencia encontrada o no usando awk

comando no encontrado al usar sudo