LS-komentoa Linuxissa käytetään luetteloimaan minkä tahansa hakemiston sisältö.
oletuksena se listaa kaiken sisällön, oli se sitten tiedosto tai hakemisto tai linkki tai nimetty putki.
mutta entä jos haluat listata vain hakemistot? Miten niin?
kuten missä tahansa Linuxissa, on useita tapoja suorittaa sama tehtävä. Vain hakemistojen listaaminen ei eroa:
- ls-d * /
- ls-l | grep ”^d ”
- etsi . – maxdepth 1-type d
- echo * /
- tree-d-L 1
älä huoli. Selitän asiat yksityiskohtaisesti. Tässä sisältö hakemiston aion käyttää esimerkeissä täällä:
käytä LS-komentoa luetteloidaksesi vain hakemistoja
se on aina hyvä tehdä tutulla LS-komennolla, koska tätä komentoa käytät hakemiston sisällön näyttämiseen.
jos haluat luetella vain alikansiot, käytä -d
– asetusta LS-komennolla näin:
ls -d */
tässä sen näyttämä ulostulo:
Documents]$ ls -d */another_dir/ my_dir/
miksi */
? Koska ilman sitä ls -d
palauttaa vain hakemiston nimen. -d
– valintaluettelo hakemistot ei sen sisältöä (joka sisältää tiedoston, hakemistot jne.).
*/
on kuvio. Arvolla *
luetellaan kaikki sisältö (mukaan lukien alikansioiden sisältö) ja /
rajoittaa kuvion hakemistoihin.
tämä kuva kuvaa eroa melko hyvin.
voit yhdistää sen pitkän listausvaihtoehdon -l
ja useimpien muiden vaihtoehtojen kanssa:
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/
jos et halua hakemiston nimien lopussa olevaa viivaa ( / ), voit leikata sen pois cut-komennolla:
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
luetteloi vain tietyn kansion alikansiot
yllä oleva komento toimii nykyisessä kansiossa. Entä jos et ole samassa hakemistossa?
tässä tilanteessa voit käyttää */
hakemiston polun lopussa numeroa ls -d
:
ls -d Path/To/Dir/*/
tässä esimerkki, jossa siirryn pois asiakirjahakemistosta ja luetteloin sitten vain hakemistot Asiakirjahakemiston sisällä:
~]$ 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/
Huomasitko, ettei siinä ole piilotettua hakemistoa? Se on yksi puute tässä menetelmässä. Voit käyttää ls -d .*/
piilokansioiden näyttämiseen, mutta se näyttää vain piilokansiot.
käytä LS-ja grep-komentojen yhdistelmää
voit aina käyttää vanhaa hyvää grep-komentoa tulosteen suodattamiseen tietyn sisällön osalta.
jos luetteloit sisällön pitkään, voit tunnistaa hakemistot, koska ne alkavat kirjaimella d
.
voit suodattaa d: llä alkavan sisällön grep: n avulla:
ls -l | grep '^d'
mutta tämä antaa sinulle paljon enemmän kenttiä kuin vain hakemiston nimet:
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
käytä Etsi-komentoa vain kansioiden luettelointiin
Näin voit käyttää Etsi-komentoa vain alikansioiden luettelointiin:
find directory_path -maxdepth 1 -type d
toivottavasti tunnet find-komennon. Selitän sen kuitenkin.
kanssa type d
pyydät Etsi-komennolla vain hakemistoja.
kanssa maxdepth 1
pyydät etsi-komentoa pitämään haun vain nykyisellä tasolla (eikä menemään alikansioihin).
Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
kuten näet yllä olevasta tulosteesta, se näyttää myös piilotetun hakemiston.
käytä tree-komentoa luetteloidaksesi vain hakemistot
jos haluat luetteloida vain hakemistot, voit käyttää myös tree-komentoa.
oletusarvoisesti puu-komento antaa sinulle koko hakemistorakenteen. Voit muokata sitä näyttämään vain hakemistoja ja vain nykyisellä tasolla.
tree -dai -L 1
- d-etsi vain kansioita
- a-etsi myös piilotiedostoja ja kansioita
- i-poista puurakenne näytöltä
- L 1-Älä mene alikansioihin
tässä tuloste:
Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
echo-komennon käyttäminen hakemistojen luettelointiin
epätodennäköinen ehdokas? Tulet yllättymään siitä, että echo-komentoa Linuxissa voidaan käyttää myös hakemiston sisällön näyttämiseen. Kokeile echo *
ja katso itse.
ls-komennon tapaan voit myös käyttää */
– mallia listataksesi vain nykyisen työhakemiston hakemistot.
echo */
tässä lähtö, joka on sama kuin mitä sait ls -d
komennolla:
voisi olla useampia tapoja listata vain hakemistoja, ei tiedostoja. Itse asiassa, menetelmiä käsitellään tässä voi olla joitakin jossia ja muttia perustuu siihen, mitä etsit.
jos tavoitteena on vain näyttää hakemistot, suurin osa käsittelemistäni komennoista toimisi. Jos haluat jotain tarkempaa, kuten Vain hakemistojen nimen saaminen slashilla jne., sinun täytyy tehdä joitakin muotoiluja itse.
toivottavasti tästä Linux-vinkistä on apua. Kysymykset ja ehdotukset ovat aina tervetulleita.