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:
- utilizați comanda ls pentru a lista directoarele numai
- listați numai subdirectoarele dintr-un anumit director
- utilizați combinația de comenzi LS și grep
- utilizați comanda find pentru a lista numai directoarele
- utilizați comanda arbore pentru a lista numai directoarele
- folosind comanda echo pentru listarea directoarelor
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.
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
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 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
:
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.