Portál AbcLinuxu, 10. května 2025 08:09
tar -czf ~/Desktop/mujarchiv.tar -C /cesta/ke/slozce/s/daty *.xmlMyslel jsem, že tohle vytvoří archiv na ploše, ve kterém budou všechny xml soubory z adresáře z -C. Ale takto to nefunguje :( Může mi to prosím někdo vysvětlit ? Já jsem z toho taru nějak mimo.
Usage: tar [OPTION...] [FILE]...Hint: nejdřív přepínače, pak soubory. Takže zkus spíš něco jako:
tar -C /cesta/ke/slozce/s/daty -czf ~/Desktop/mujarchiv.tar souboryProblém bude s tím *.xml, to totiž nebude takhle jednoduchý. Jde o to, že shell provede substituci ještě než se ten příkaz spustí...
tar -C ~/ -zcvf test.tar $(cd && ls *.png)ale je to naprostá hrůza, která nefunguje když označí velkou spoustu souborů.
find
: cd /cesta/ke/slozce/s/daty/ && tar -czf ~/Desktop/mujarchiv.tar `find -name '*.xml' -type f -print`
Navíc mě později napadlo, že to nebude fungovat jakmile bude v názvech souborů mezera, ale zas kdo by něco takovýho dělal, že...
Už jsem pár takových viděl…
Navíc mě později napadlo, že to nebude fungovat jakmile bude v názvech souborů mezera, ale zas kdo by něco takovýho dělal, že...No právě
cd /cesta/ke/slozce/s/daty/ && find -name '*.xml' -type f -print0 | xargs -0 tar -czf ~/Desktop/mujarchiv.tarBohužel je zde omezení maximální délky příkazového řádku, viz.
xargs --show-limits
Bohužel je zde omezení maximální délky příkazového řádku, viz.No, právě že tohle taky není zrovna ideální rešení, protože tohle není tak docela pravda. On totiž xargs v případě potřeby (překročení tý max. délky) spustí ten příkaz na víckrát...xargs --show-limits
No, právě že tohle taky není zrovna ideální rešení, protože tohle není tak docela pravda. On totiž xargs v případě potřeby (překročení tý max. délky) spustí ten příkaz na víckrát...Jenže to také není tak úplně pravda, viz man xargs:
-x Exit if the size (see the -s option) is exceeded.
Ono to funguje, jenže to děláš špatně. Hned první řádek v helpu říká: Usage: tar [OPTION...] [FILE]... Hint: nejdřív přepínače, pak soubory. Takže zkus spíš něco jako: tar -C /cesta/ke/slozce/s/daty -czf ~/Desktop/mujarchiv.tar soubory... ale houby, -C je samozrejme taky jenom dalsi option (prepinac), takze ho ma uplne spravne pred seznamem souboru (*.xml) Problem je v tom, ze to *.xml vyhodnoti uz shell a tar dostane uz prikazovou radku, kde misto *.xml je soubor1.xml, soubor2.xml, soubor3.xml... Jenze ten shell to samozrejme dela v aktualnim adresari, a ten parametr -C zpracuje az tar. Shell o nem nevi kdyz expanduje *.xml. Mozna by bylo nejjednodussi do toho adresare predtim vlezt normalne pomoci cd.
ale houby, -C je samozrejme taky jenom dalsi option (prepinac)Jo, já vím...
takze ho ma uplne spravne pred seznamem souboru (*.xml)Hmm, máš pravdu. To jsem nezkoušel, tak jsem automaticky předpokládal, že je problém v tomhle... Tak se omlouvám. Jinak ta expanze, to je mi jasný, o tom jsem psal taky.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.