az ls parancs Linuxban bármely könyvtár tartalmának felsorolására szolgál.
alapértelmezés szerint felsorolja az összes tartalmat, legyen az Fájl vagy könyvtár, link vagy megnevezett cső.
de mi van, ha csak a könyvtárakat szeretné felsorolni? Hogy csinálod?
mint bármi más a Linuxban, többféle módon is elvégezheti ugyanazt a feladatot. Csak a könyvtárak felsorolása nem különbözik egymástól:
- ls-d * /
- ls-l | grep ‘^d’
- talál . – maxdepth 1-D típus
- echo * /
- fa-d-L 1
ne aggódj. Részletesen elmagyarázom a dolgokat. Itt található a könyvtár tartalma, amelyet az itt található példákban fogok használni:
- az ls paranccsal csak könyvtárakat sorolhat fel
- csak az alkönyvtárakat sorolja fel egy adott könyvtárban
- használja az ls és a grep parancs kombinációját
- a find paranccsal csak könyvtárakat sorolhat fel
- a tree paranccsal csak könyvtárakat sorolhat fel
- az echo parancs használata könyvtárak felsorolásához
az ls paranccsal csak könyvtárakat sorolhat fel
mindig jó az ismerős ls paranccsal megtenni, mert ezt a parancsot használja a könyvtár tartalmának megjelenítésére.
csak az alkönyvtárak felsorolásához használja a -d
opciót az LS paranccsal:
ls -d */
itt látható a kimenet:
Documents]$ ls -d */another_dir/ my_dir/
miért */
? Mert enélkül a ls -d
csak a könyvtár nevét adja vissza. A -d
opció lista könyvtárak nem annak tartalmát (amely magában foglalja a fájl, könyvtárak stb).
a */
egy minta. A *
segítségével felsorolja az összes tartalmat (beleértve az alkönyvtárak tartalmát is), a /
pedig a mintát könyvtárakra korlátozza.
ez a kép jól mutatja a különbséget.
kombinálhatja a -l
hosszú listázási opcióval és a legtöbb más opcióval:
Documents]$ ls -ld */drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/
ha nem szeretné, hogy a záró perjel (/) a könyvtárnevek végén legyen, akkor a cut paranccsal kivághatja:
Documents]$ ls -ld */ | cut -f1 -d'/'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
csak az alkönyvtárakat sorolja fel egy adott könyvtárban
a fenti parancs az aktuális könyvtárban működik. Mi van, ha nem ugyanabban a könyvtárban vagy?
ebben a helyzetben használhatja a */
– ot a könyvtár elérési útjának végén a ls -d
– vel:
ls -d Path/To/Dir/*/
Íme egy példa, ahol ki kell lépnem a dokumentumok könyvtárból, majd csak a dokumentumok könyvtáron belüli könyvtárakat kell felsorolnom:
~]$ ls -ld Documents/*/drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/
észrevetted, hogy nem sorolja fel a rejtett könyvtárat? Ez a módszer egyik hiányossága. A ls -d .*/
használatával rejtett könyvtárakat jeleníthet meg, de csak rejtett könyvtárakat jelenít meg.
használja az ls és a grep parancs kombinációját
mindig a jó öreg grep parancsra támaszkodhat a kimenet szűréséhez egy adott tartalomhoz.
ha hosszú listát a tartalmát, akkor azonosítani a könyvtárakat, mert kezdeni d
.
a grep segítségével szűrheti a D betűvel kezdődő tartalmat:
ls -l | grep '^d'
de ez sokkal több mezőt ad, mint a könyvtárnevek:
Documents]$ ls -l | grep '^d'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
a find paranccsal csak könyvtárakat sorolhat fel
a find paranccsal csak az alkönyvtárakat sorolhatja fel:
find directory_path -maxdepth 1 -type d
remélem, ismeri a Keresés parancsot. Ennek ellenére elmagyarázom.
type d
esetén a find parancs csak könyvtárakat keres.
a maxdepth 1
paranccsal a Keresés parancsot arra kéri, hogy a keresést csak az aktuális szinten tartsa (és ne lépjen be az alkönyvtárakba).
Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
mint látható a fenti kimeneten, ez is mutatja a rejtett könyvtárat.
a tree paranccsal csak könyvtárakat sorolhat fel
ha csak a könyvtárakat szeretné felsorolni, használhatja a tree parancsot is.
alapértelmezés szerint a fa parancs megadja a teljes könyvtárszerkezetet. Módosíthatja úgy, hogy csak a könyvtárak jelenjenek meg, és csak az aktuális szinten.
tree -dai -L 1
- d-csak könyvtárak keresése
- a – rejtett fájlok és könyvtárak keresése is
- i – távolítsa el a fa szerkezetét a kijelzőről
- L 1-ne menjen be az alkönyvtárakba
itt van a kimenet:
Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
az echo parancs használata könyvtárak felsorolásához
a valószínűtlen jelölt? Meg fog lepődni, ha tudja, hogy az echo parancs Linuxban is használható egy könyvtár tartalmának megjelenítésére. Próbáld ki a echo *
– ot, és nézd meg magad.
az ls parancshoz hasonlóan a */
mintával is csak az aktuális munkakönyvtár könyvtárait sorolhatja fel.
echo */
itt van a kimenet, amely megegyezik azzal, amit a ls -d
paranccsal kapott:
több lehetőség is lehet csak a könyvtárak felsorolására, a fájlok nem. Valójában az itt tárgyalt módszereknek lehetnek bizonyos if-ek és De-k az alapján, amit keres.
ha a cél az, hogy csak a könyvtárakat jelenítse meg, akkor az általam tárgyalt parancsok többsége működni fog. Ha azt szeretnénk, valami konkrétabb, mint csak kapok a könyvtárak nevét perjel stb, akkor meg kell csinálni néhány formázás a saját.
remélem, hasznosnak találja ezt a Linux tippet. Kérdések és javaslatok mindig szívesen.