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?
- 4584 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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/*
- A hozzászóláshoz be kell jelentkezni
Szerintem a * glob nem illeszkedik a .-tal kezdődő - hidden - alkönyvtár- és filenevekre. Nekem az
echo * | grep bashrc
például nem ad vissza semmit.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A .. miatt aggódom továbbra is. Lehet, mégsem kísérleteznék még a tmp-ben sem.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Ez működik.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
cd /itt/van
rm -rf .
- A hozzászóláshoz be kell jelentkezni
Ez szerintem nem a tertalmát törölné, hanem magát a /itt/van alkönyvtárat. Egyébként ezt mondta:
rm: nem törölhető a következő könyvtár: ”.”
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni