GNU/Linux >> Znalost Linux >  >> Linux

Chyba shellu „tar:nenalezen v archivu“ při použití regulárního výrazu

Když píšete:

tar -xf *.gz

tar příkaz vidí (například):

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

To je interpretováno jako požadavek na extrakci def.tar.gz a ghi.tar.gz z archivu abc.tar.gz . Protože tam soubory nejsou, zobrazí se varovná zpráva.

Jinými slovy tar funguje na jediném tar soubor (případně komprimovaný) najednou (v jednom vyvolání). Nepracuje s více soubory tar.

Všimněte si, že pokud abc.tar.gz obsahuje soubor pqr/xyz/important.c , můžete extrahovat pouze jeden soubor zadáním:

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

Zápis, který jste použili, je pouze variantou tohoto zápisu.

(A ano, mohou existovat důvody tar tar soubor. Gmail vám například neumožňuje odeslat soubor tar nebo soubor tar ve formátu gzip, který obsahuje spustitelný soubor. Pokud však vložíte gzipovaný soubor tar do nekomprimovaného souboru tar, nebude hledat spustitelný soubor uvnitř vnitřního souboru. Používám to, když potřebuji odeslat soubor tar se spustitelným souborem configure skript.)


hlavním důvodem je tar bere jeden argument názvu souboru. Když voláte tar *.tgz bash rozšiřuje * na všechny názvy souborů s formantem tgz a stane se tar file1 file2 file3 který tar nepřijímá . Buď tedy použijete cyklus for jako for i in *.tgz; do tar -zxvf $i ;done nebo použijte nějaký jiný příkaz, který provede tar jako vedlejší efekt, jak je ukázáno v komentářích, je ls nebo find . -maxdepth 1 -name \*tgz -exec tar -zxvf {} \; (ls výstup je vždy riskantní)


Když píšeš

 tar -xzf *.gz

váš shell jej rozšíří na řetězec:

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

(za předpokladu, že 1.gz, 2.gz a 3.gz jsou ve vašem aktuálním adresáři).

tar si myslí, že chcete extrahovat 2.gz a 3.gz od 1.gz; nemůže tyto soubory najít v archivech a to způsobí chybovou zprávu.

Musíte použít smyčku for příkazu xargs extrahovat soubory.

ls *.gz |xargs -n1 tar -xzf

To znamená:spustit mi tar -xzf za každých gz -file v aktuálním adresáři.


Linux
  1. Opravit chybu ZipArchiv třídy nenalezen [PHP 7]

  2. [Linux] :Jak vyloučit adresář při použití příkazu shellu „tar“.

  3. Příkaz yum-config-manager nenalezen [Opravit]

  1. c_rehash :Chyba příkazu nenalezena – Řešení

  2. Kdy se zobrazí chybová zpráva „pracovní místa:nenalezena“?

  3. Pole v Bash nenalezeno

  1. FATAL:Chyba modulu nenalezena pomocí modprobe

  2. Chyba libevent nenalezena v tmux

  3. sshpass:Chyba příkazu nenalezena