Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: Peterx 28 Prosince 2007, 11:58:49

Název: rm a ls rekurzivne
Přispěvatel: Peterx 28 Prosince 2007, 11:58:49
Vie mi niekto poradit ak chcem dat vymazat subori napriklad z koncovkov gz z adresara /var/log
preco mi nefunguje rm -r /var/log/*.gz
Ani ls -R /var/log/*.gz mi nejde, ale ls -R /var/log/ funguje spravne.
Název: Re: rm a ls rekurzivne
Přispěvatel: Martin - ViPEr*CZ* 28 Prosince 2007, 12:25:04
Co to hází za chybu?
Název: Re: rm a ls rekurzivne
Přispěvatel: Peterx 29 Prosince 2007, 22:46:25
Ziadna chyba.
ls -R /var/log/*.gz - vypise vsetko co ma koncovku gz ale nie v podadresaroch.
ls -R /var/log - vypise vsetko aj v podadresaroch.
Tak isto sa chova prikaz rm.
Nechapem preco...
Název: Re: rm a ls rekurzivne
Přispěvatel: Duffy 29 Prosince 2007, 23:24:15
Je to logické, pokud zadáte ls -R /var/log/*.gz, nemůže vám to zobrazit /var/log/cokoliv/*.gz . Neodpovídá to té první cestě. Pokud byste aplikoval tuto logiku i na jiné příkazy tak třebas editováním /var/log/list.gz byste editoval i /var/log/kernel/list.gz, což nemusíte vždycky chtít. Zkusil jsem napsat nějaký skript který by vešel do každé složky v /var/log a vymazal z ní všechny soubory s příponou *.gz ale nepovedlo se mi to, bohužel toto skriptování příliš neovládám.
Název: Re: rm a ls rekurzivne
Přispěvatel: Peterx 30 Prosince 2007, 09:13:43
No da sa to spravit cez find, ale mna by zaujimalo preco rekurzivne vlastne v urcitych pripadoch rekurzivne nie je?
Název: Re: rm a ls rekurzivne
Přispěvatel: Duffy 30 Prosince 2007, 12:39:36
No je to rekurzivny, proctete si pozorne co jsem vám již napsal, /var/log/cokoliv/hist.gz, nenajdete když rekurzivně vypisujete /var/log/*.gz jelikož ta cesta je prostě jiná, *.gz by nikdy neměl bejt adresář. Příkazem ls -R /var/log hledáte vlastně všechny výskyty /var/log/*. A příkazem ls -R /var/log/*.gz hledáte vlastně /var/log/*.gz/*. Jenom v tom druhém případě nic nenajde, jelikož *.gz bude soubor a nikoliv adresář.
Název: Re: rm a ls rekurzivne
Přispěvatel: Pavelp 30 Prosince 2007, 18:38:31
Je to logické, pokud zadáte ls -R /var/log/*.gz, nemůže vám to zobrazit /var/log/cokoliv/*.gz . Neodpovídá to té první cestě. Pokud byste aplikoval tuto logiku i na jiné příkazy tak třebas editováním /var/log/list.gz byste editoval i /var/log/kernel/list.gz, což nemusíte vždycky chtít. Zkusil jsem napsat nějaký skript který by vešel do každé složky v /var/log a vymazal z ní všechny soubory s příponou *.gz ale nepovedlo se mi to, bohužel toto skriptování příliš neovládám.

A takhle nejak to neslo ?
ls -d $TOPDIR* >> $SEZNAM ;          # cely diry do work seznamu
for I in `cat $SEZNAM`; do udelat_neco_se $I ; done
Název: Re: rm a ls rekurzivne
Přispěvatel: Peterx 30 Prosince 2007, 21:12:17
"A příkazem ls -R /var/log/*.gz hledáte vlastně /var/log/*.gz/*"
Takto to asi nebude, lebo po zadani prikazu mi to vypise vsetky subori vo /var/log/ s koncovkov gz, cize nehladam /var/log/*.gz/*. Ak by mi to nic nenaslo suhlasil by som, ale tak to nie je. Proste vypise tie subori gz ale nie v podadresaroch, ale len v tom hlavnom..
To mazanie ide  napriklad takto: find /var/log/ -name *.gz | xargs rm -f
Mne ide o to skor pochopit preco sa ls -R chova tak ako chova.
Název: Re: rm a ls rekurzivne
Přispěvatel: pooh 30 Prosince 2007, 21:20:48
a spuštění ve /var/log bz nepomohlo?
Název: Re: rm a ls rekurzivne
Přispěvatel: Duffy 30 Prosince 2007, 22:20:24
"A příkazem ls -R /var/log/*.gz hledáte vlastně /var/log/*.gz/*"
Takto to asi nebude, lebo po zadani prikazu mi to vypise vsetky subori vo /var/log/ s koncovkov gz, cize nehladam /var/log/*.gz/*. Ak by mi to nic nenaslo suhlasil by som, ale tak to nie je. Proste vypise tie subori gz ale nie v podadresaroch, ale len v tom hlavnom..
To mazanie ide  napriklad takto: find /var/log/ -name *.gz | xargs rm -f
Mne ide o to skor pochopit preco sa ls -R chova tak ako chova.

Chlape ty bys měl jít do politiky :D. Uplně nevědomky vytrháváš věty z kontextu tak že pomalu přestávaj dávat smysl :D, přečti si ty ostatní věty v příspěvku, zvláště tu následující ;).

Rekurzivní hledání v tomto případě funguje tak že hledá v podsložkách. ls -R /var/log je tedy teoreticky to stejné jako všechny výpisy ls /var/log/* (až na to že ten druhý příkaz vypíše jen abecedně první adresář a žádné soubory). Příkaz ls -R /var/log/*.gz tedy hledá v adresáři /var/log/, kde najde všechny výskyty *.gz, poté ale hledá v adresáři /var/log/*.gz, ale okamžitě zjistí že to není adresář tím pádem hledání ukončí.

Pokud zadát ls -R /var/log/*.gz nemůže najít /var/log/něco/*.gz. Pokud by se takto choval tak by při ls -R /var/log vypsal i třeba /var/cache/log (stejná logika, opět je pozměněna zadaná cesta dalším adresářem.
Název: Re: rm a ls rekurzivne
Přispěvatel: Peterx 31 Prosince 2007, 08:19:48
Uz chapem, ale myslim ze je to cudne chovanie. Ved je jasny rozdiel medzi /*.gz a /.gz/
Název: Re: rm a ls rekurzivne
Přispěvatel: Krtko 31 Prosince 2007, 10:39:20
no podla mna je to uplne logicke chovanie. ale zase rucne mazanie .gz suborov vo /var/log je hlupost. precitaj si manual k programu logrotate a porzri si jeho nastavenia.
Název: Re: rm a ls rekurzivne
Přispěvatel: Peterx 31 Prosince 2007, 10:59:53
No az taka hlupost to nie je. Viem ze sa daju rotovat, ale mne to z urciteho dovodu nevyhovuje.