Příliš dlouhý seznam argumentů

Dan Lukes dan at obluda.cz
Wed Jun 25 09:37:36 CEST 2008


Jaroslav Votruba wrote:
> potrebuji vymazat miliony logu z adresare, nicmene je jich tam asi moc a 
> odpalkuje me to. jak to poresit?
> 
> [root at mfgpro rdt1]# find *.log -atime +7  -exec rm -f {} \;
> bash: /usr/bin/find: Příliš dlouhý seznam argumentů

To je proto, ze jakmile je tam primo napsano *.log, tak tenhle zapis uz 
shell (tedy driv, nez se vubec spusti find) nahradi seznamem souboru, 
ktere vyhovuji patternu. A tim prekroci maximalni delku prikazove radku.

Pepovo
find . -name '*.log' -atime +7 | xargs rm -f

tuhle vadu nema, protoze '*.log' je v apostrofech a tudiz ho shell 
neexpanduje, dostane se nezmeneny az k findu a ten uz si to vyresi sam.


Snad jen - ja bych misto -exec nebo xargs napsal proste:

find . -name '*.log' -atime +7 -delete

Tim se soucasne resi otazka bezpecnosti vuci souborum, ktere v nazvu 
obsahuji "divne znaky" jako jsou mezery nebo konce radku.

Teda, ja bych to napsal jeste jinak:

find . -name '*.log' -ctime +7 -delete

Pripada mi zeby se LOGy mazaly podle casu, kdy k nim nekdo naposledy 
pristoupil - logictejsi je mazat podle data vytvoreni nebo jeste tak 
posledni modifikace (-mtime) ...

						Dan




More information about the Users-l mailing list