Portál AbcLinuxu, 17. července 2025 18:33


Dotaz: Selektivne mazanie suborov

30.9.2004 19:34 blacksun | skóre: 7
Selektivne mazanie suborov
Přečteno: 310×
Odpovědět | Admin

Majme velky adresarovy strom obsahujuci stovky suborov roznych druhov v mnohych podadresaroch.

Ako mozem v tomto adresarovom strome zmazat

a) vsetky subory s velkostou mensou ako X kB
b) alebo vsetky subory okrem tych s priponami .txt a .sh,
tak aby mi neostali prazdne podadresare ak bol pri horeuvedenom mazani ich obsah vymazany?

P.S. Ulohu by bolo mozne riesit aj selektivnym kopirovanim do noveho adresaroveho stromu ... ale ako na to?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.9.2004 19:40 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pomoci find, konkretne

find <adresar> <podminka> -exec rm {} \;

viz. man find

30.9.2004 20:32 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov
Nebo preferovaná varianta téhož, je-li těch souborů hodně
find adresář podmínka -print0 | xargs -0 rm
Smazat nově vzniklé prázdné adresáře, ale ponechat existující prázdné adresáře je složitější (a nevím, jestli to chceš -- udělal bych to testem na mtime); všechny prázdné normálně mažu
find adresář -type d | tac | xargs rmdir
slabší povahy raději na konec přidají 2>/dev/null ;-)
30.9.2004 20:53 8an | skóre: 30
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov
Já používám pro mazání prázdných adresářů:

find -depth -type d -empty -exec rmdir '{}' \;

Myslím, že je to trochu čistší :-)

If you build an operating system that even an idiot can use, only idiots will use it.
30.9.2004 21:43 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov
Je, ale nefunguje na adresáře, které obsahují jen prázdné adresáře (které obsahují jen prázdné adresáře, etc.). Moje řešení je brutální, ale díky tac funguje rovnou rekursivně ;-)
1.10.2004 12:35 Peter Krizan
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov

A ako mu v tej podmienke poviem, ze ma mazat subory mensie ako 20 kB? V prepinaci -size prikazu find sa hovori len o nejakych blokoch ... :o(

1.10.2004 12:41 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov
Myslim ze s temi kB to vyresis timhle
find -size 20k ...
;-)
1.10.2004 12:30 Peter Krizan
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov

Diky, a ako by som mohol vyriesit ulohu B - skopirovat subory s urcenymi priponami do noveho adresaroveho stromu, tak aby sa nachadzali v rovnakej adresarovej strukture ako boli povodne?

Prikaz cp by to nakopiroval vsetko do jedneho adresara, ci nie?

1.10.2004 12:49 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov

To uz tak jednoduchy nebude, v jednom prikazu to nepude vubec rekl bych. Asi bude potreba pouzit spojeni prikazu find na vyhledani souboru s danou priponou, dirname na urceni adresare kde je, mkdir -p na vytvoreni toho adresare nekde jinde a cp na zkopirovani

1.10.2004 13:16 Tučňák
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov

Ahoj

Tohle by Ti snad mohlo fungovat:

cd <FROM_DIR>
find . -type f -name \*.<SUFFIX> -exec \
cp --parents {} <TO_DIR> \;

Mej se

Martin

1.10.2004 13:20 Tučňák
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov

Jo, a kdyby tech pripon bylo vic, tak to samy, az na to, ze ten find by mel:

\( -name \*.<SUFFIX1> -o -name \*.<SUFFIX2> atd. \)

Martin

1.10.2004 14:11 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Selektivne mazanie suborov
... | xargs cp --parents --target-directory=<TO_DIR>

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.