hogyan lehet csak könyvtárakat felsorolni Linuxban

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:

egy könyvtár tartalmának felsorolása Linux alatt

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.

 csak a Linuxban lévő könyvtárak listája

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
list sudirectories csak find paranccsal Linux

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
a fa parancs használata csak alkönyvtárak felsorolásához Linuxban

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:

az echo parancs használata a könyvtárak listázásához csak a Linux parancssorban

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.

Write a Comment

Az e-mail-címet nem tesszük közzé.