[Megoldva, bár ötletek jöhetnek még] Rekurzív törlés

Fórumok

Rádöbbentem szégyenletes hiányosságomra.

Hogyan lehet egy alkönyvtárból minden file-t, alkönyvtárat törölni úgy, hogy magát az illető alkönyvtárat nem töröljük?

Gondolnék az

rm -Rf /itt/van/{.,}*

megoldásra, ám az a félelmem, hogy a . illetve .. nevekből baj lesz. Konkrétan a cp és az rsync simán feljön a .. miatt egy szinttel feljebb, rm-mel meg inkább nem próbálkoznék. Valahogy a globbing sem néz ki túl jól.

Szóval hogyan lehet elérni, hogy /itt/van üres legyen?

Hozzászólások

Igénytelen megoldás, ami azért sem jó, mert töröl, utána újra létrehoz:

dirs=`find -type d`
rm -rf *
mkdir -p $dirs

Szerk: félreértettelek, elsőre azt hittem, a teljes struktúrát meg akarod őrizni.

Nem. Mindent ki akarok törölni egy alkönyvtárból, de az alkönyvtárat már nem akarom törölni. Az újra létrehozás jogosultsági problémákba ütközik. Bár... lehet, ez lesz a megoldás. A /itt-re nincs írási jogom, így a /itt/van alkönyvtárat nem tudom törölni, s lehet, csak ennyit kellene csinálnom:

rm -Rf /itt/van

Azért keresem a korrekt megoldást. Mi van, ha van jogom letörölni, de nem akarom? Például, mint csoportbelinek lenne írási jogom a /itt-re, így tudom törölni a /itt/van-t, ugyanakkor nem tudom létrehozni az eredeti tulajdonossal, mert nem én voltam a tulajdonosa.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

rm -rf /itt/van/*

A végén levő * -ban van a kulcs a kérdésedre. Ha a /itt/van/ lenne csak, akkor a van/-t is törli.

Javaslat: előtte bátran próbáld ki, a /tmp mappa például kiváló az ilyen kísérletezésre.

mkdir /tmp/itt
> /tmp/itt/aaa
> /tmp/itt/bbb
mkdir /tmp/itt/ccc

rm -rf /tmp/itt/*

Nézve a netet, valami ilyesmi lesz:

find -P '/itt/van/' -xdev -mindepth 1 -delete

Kár, hogy a find-ot nem ismerem. Jó lett volna rm-mel megoldani.

Azért, ha valakinek van egyszerű, jó ötlete, írja!

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE