te tonen het ls commando in Linux wordt gebruikt voor het weergeven van de inhoud van elke map.
standaard toont het alle inhoud, of het nu een bestand of een map of een link of een benoemde pipe is.
maar wat als u alleen de mappen wilt weergeven? Hoe doe je dat?
zoals alles in Linux, zijn er verschillende manieren om dezelfde taak uit te voeren. Alleen de mappen weergeven is niet anders:
- ls-d * /
- ls-l / grep ‘^d ‘
- find . – maxdepth 1-type d
- echo * /
- tree-d-L 1
geen zorgen. Ik zal alles in detail uitleggen. Hier is de inhoud van de directory die ik ga gebruiken in de voorbeelden hier:
gebruik het ls commando om alleen directory ‘ s
weer te geven het is altijd goed om dit te doen met het vertrouwde ls commando omdat dit het commando is dat je gebruikt om de inhoud van een map weer te geven.
om alleen de submappen weer te geven, gebruik de optie -d
met ls commando als volgt:
ls -d */
hier is de uitvoer die het toont:
Documents]$ ls -d */another_dir/ my_dir/
waarom */
? Omdat zonder dit, ls -d
alleen de mapnaam retourneert. De -d
optie lijst mappen niet de inhoud (die bestanden, mappen etc.bevat).
de */
is een patroon. Met *
geeft u alle inhoud weer (inclusief de inhoud van de submappen) en /
beperkt het patroon tot mappen.
deze afbeelding geeft het verschil vrij goed weer.
u kunt het combineren met de lange lijst Optie -l
en de meeste andere opties:
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/
Als u niet wilt dat de trailing slash (/) aan het einde van de directorynamen, kunt u het cut commando gebruiken om het uit te knippen:
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
Toon alleen submappen in een specifieke map
het bovenstaande commando werkt in de huidige map. Wat als u zich niet in dezelfde directory bevindt?
in deze situatie kunt u */
gebruiken aan het einde van het pad van de map met ls -d
:
ls -d Path/To/Dir/*/
hier is een voorbeeld waarin ik uit de map Documenten ga en dan alleen de mappen in de map Documenten weergeeft:
~]$ 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/
heb je gemerkt dat het niet een lijst van de verborgen directory? Dat is een tekortkoming van deze methode. U kunt ls -d .*/
gebruiken om verborgen mappen weer te geven, maar het toont alleen verborgen mappen.
gebruik combinatie van ls en grep Commando
u kunt altijd vertrouwen op de goede oude grep commando voor het filteren van de uitvoer voor specifieke inhoud.
Als u een lange lijst van de inhoud, kunt u de mappen identificeren omdat beginnen met d
.
u kunt grep gebruiken om de inhoud te filteren die begint met d:
ls -l | grep '^d'
maar dit geeft je veel meer velden dan alleen de directorynamen:
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
gebruik de opdracht Zoeken om alleen mappen te tonen
zo kunt u de opdracht Zoeken gebruiken om alleen de submappen weer te geven:
find directory_path -maxdepth 1 -type d
ik hoop dat je bekend bent met het find Commando. Ik zal het toch uitleggen.
met type d
vraagt u het commando Zoeken om alleen naar mappen te zoeken.
met maxdepth 1
vraagt u de opdracht find om de zoekopdracht alleen op het huidige niveau te houden (en niet in de submappen te gaan).
Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
zoals je kunt zien in de uitvoer hierboven, toont het ook de verborgen map.
gebruik het tree commando om alleen mappen te tonen
Als u alleen de mappen wilt weergeven, kunt u ook het tree commando gebruiken.
standaard geeft het tree Commando u de volledige mapstructuur. U kunt het wijzigen om alleen mappen weer te geven en alleen op het huidige niveau.
tree -dai -L 1
- d-zoek alleen naar mappen
- a – zoek ook naar verborgen bestanden en mappen
- i-verwijder de boomstructuur van het scherm
- L 1-Ga niet in de submappen
hier is de uitvoer:
Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
echo commando gebruiken voor het tonen van mappen
de onwaarschijnlijke kandidaat? Het zal je verbazen dat echo command in Linux ook gebruikt kan worden voor het weergeven van de inhoud van een directory. Probeer echo *
te gebruiken en ontdek het zelf.
net als het ls Commando, kunt u ook het */
patroon gebruiken om alleen de mappen in de huidige werkmap weer te geven.
echo */
hier is de uitvoer die identiek is aan wat je hebt met het ls -d
Commando:
weer te geven, kunnen er meer manieren zijn om alleen de mappen weer te geven, niet de bestanden. In feite, de hier besproken methoden kunnen een aantal ifs en buts op basis van wat u zoekt.
als uw doel is om alleen de mappen weer te geven, zouden de meeste commando ‘ s die ik besproken heb werken. Als je iets specifiekers wilt, zoals alleen de naam van de directory ‘ s met slash etc, moet je zelf wat formatteren.
ik hoop dat je deze Linux tip nuttig vindt. Vragen en suggesties zijn altijd welkom.