cum se listează numai directoarele în Linux

comanda ls în Linux este utilizată pentru listarea conținutului oricărui director.

în mod implicit, listează tot conținutul, fie că este un fișier sau un director sau un link sau o conductă numită.

dar dacă doriți să listați doar directoarele? Cum faci asta?

ca orice în Linux, există mai multe moduri de a îndeplini aceeași sarcină. Listarea numai directoarele nu este diferită:

  • ls-d * /
  • ls-l | grep ‘^d’
  • găsi . – maxdepth 1-tip d
  • echo * /
  • copac-d-L 1

nu-ți face griji. Voi explica lucrurile în detaliu. Iată conținutul directorului pe care îl voi folosi în exemplele de aici:

listarea conținutului unui director în Linux

utilizați comanda ls pentru a lista directoarele numai

este întotdeauna bine să o faceți cu comanda ls familiară, deoarece aceasta este comanda pe care o utilizați pentru afișarea conținutului unui director.

pentru a lista numai subdirectoarele, utilizați opțiunea -d cu comanda ls ca aceasta:

ls -d */

Iată ieșirea pe care o arată:

 Documents]$ ls -d */another_dir/ my_dir/

de ce */? Pentru că fără ea, ls -d va returna doar numele directorului. -d lista de opțiuni directoare nu conținutul său (care include fișier, directoare etc).

*/ este un model. Cu *, listați tot conținutul (inclusiv conținutul subdirectoarelor) și / restricționează modelul la directoare.

această imagine descrie diferența destul de bine.

 lista numai directoare în Linux

s-ar putea combina cu opțiune de listare lung -l și cele mai multe alte opțiuni:

 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/

dacă nu doriți slash-ul final ( / ) la sfârșitul numelor de directoare, puteți utiliza comanda cut pentru a-l tăia:

 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

listați numai subdirectoarele dintr-un anumit director

comanda de mai sus funcționează în directorul curent. Ce se întâmplă dacă nu sunteți în același director?

în această situație, puteți utiliza */ la sfârșitul căii directorului cu ls -d:

ls -d Path/To/Dir/*/

Iată un exemplu în care mă mut din directorul Documente și apoi listez doar directoarele din directorul Documente:

 ~]$ 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/

ați observat că nu listează directorul ascuns? Acesta este un neajuns al acestei metode. Puteți utiliza ls -d .*/ pentru a afișa directoare ascunse, dar afișează numai directoare ascunse.

utilizați combinația de comenzi LS și grep

vă puteți baza întotdeauna pe comanda grep veche bună pentru filtrarea ieșirii pentru conținut specific.

dacă lista lung conținutul, puteți identifica directoarele, deoarece începe cu d.

puteți utiliza grep pentru a filtra conținutul care începe cu d:

ls -l | grep '^d'

dar acest lucru vă oferă mult mai multe câmpuri decât doar numele directoarelor:

 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

utilizați comanda find pentru a lista numai directoarele

Iată cum să utilizați comanda find pentru a lista numai subdirectoarele:

find directory_path -maxdepth 1 -type d

sper că sunteți familiarizați cu comanda find. Voi explica totuși.

cu type d, cereți comenzii find să caute numai directoare.

cu maxdepth 1 cereți comenzii find să păstreze căutarea doar la nivelul curent (și să nu intre în subdirectoare).

 Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
listați sudirectoarele numai cu comanda find în Linux

după cum puteți vedea în ieșirea de mai sus, arată și directorul ascuns.

utilizați comanda arbore pentru a lista numai directoarele

dacă scopul dvs. este să listați numai directoarele, puteți utiliza și comanda arbore.

în mod implicit, comanda arbore vă oferă structura completă a directorului. Puteți să-l modificați pentru a afișa numai directoare și numai la nivelul actual.

tree -dai -L 1
  • d-căutați numai directoare
  • a-Căutați și fișiere și directoare ascunse
  • i – scoateți structura arborescentă de pe afișaj
  • L 1 – nu intrați în subdirectoare

Iată ieșirea:

 Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
folosind comanda arbore pentru a lista numai subdirectoarele din Linux

folosind comanda echo pentru listarea directoarelor

candidatul puțin probabil? Veți fi surprins să știți că comanda echo în Linux poate fi utilizată și pentru afișarea conținutului unui director. Încercați să utilizați echo * și vedeți singur.

Similar cu comanda ls, puteți utiliza, de asemenea, modelul */ pentru a lista numai directoarele din Directorul de lucru curent.

echo */

iată ieșirea care este identică cu cea obținută cu comanda ls -d :

folosind comanda echo pentru a lista directoarele numai în linia de comandă Linux

ar putea exista mai multe modalități de listare numai directoarele, nu fișierele. De fapt, metodele discutate aici pot avea unele dacă și buts bazate pe ceea ce căutați.

dacă scopul tău este să afișezi directoarele, majoritatea comenzilor pe care le-am discutat ar funcționa. Dacă doriți ceva mai specific, cum ar fi obținerea numelui directoarelor cu slash etc., va trebui să faceți o formatare pe cont propriu.

sper că veți găsi acest sfat Linux util. Întrebările și sugestiile sunt întotdeauna binevenite.

Write a Comment

Adresa ta de email nu va fi publicată.