ls-kommandoen i Lins bruges til at liste indholdet af enhver mappe.
som standard viser det alt indhold, det være sig en fil eller et bibliotek eller et link eller et navngivet rør.
men hvad nu hvis du kun vil liste katalogerne? Hvordan gør du det?
som med alt andet, er der flere måder at udføre den samme opgave på. Notering Kun mapper er ikke anderledes:
- ls-d * /
- ls-l | grep ‘^d’
- finde . – maksdybde 1 – type d
- echo */
- træ-D-L 1
bare rolig. Jeg vil forklare tingene i detaljer. Her er indholdet af den mappe, jeg vil bruge i eksemplerne her:
brug LS-kommandoen til kun at liste mapper
det er altid godt at gøre det med den velkendte ls-kommando, fordi dette er den kommando, du bruger til at vise indholdet af en mappe.
for kun at liste undermapperne skal du bruge indstillingen -d
med Ls-kommandoen som denne:
ls -d */
her er output det viser:
Documents]$ ls -d */another_dir/ my_dir/
hvorfor */
? For uden det vil ls -d
kun returnere katalognavnet. Den -d
option liste mapper ikke dens indhold (som omfatter fil, mapper osv).
*/
er et mønster. Med *
viser du alt indholdet (inklusive indholdet i undermapperne), og /
begrænser mønsteret til mapper.
dette billede viser forskellen temmelig godt.
du kan kombinere det med lang notering option -l
og de fleste andre muligheder:
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/
hvis du ikke vil have den efterfølgende skråstreg ( / ) i slutningen af katalognavnene, kan du bruge kommandoen klip til at klippe den ud:
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
angiv kun undermapper i en bestemt mappe
ovenstående kommando fungerer i den aktuelle mappe. Hvad hvis du ikke er i samme mappe?
i denne situation kan du bruge */
i slutningen af stien til mappen med ls -d
:
ls -d Path/To/Dir/*/
her er et eksempel, hvor jeg flytter ud af dokumentmappen og derefter kun viser katalogerne inde i dokumentmappen:
~]$ 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/
har du bemærket, at det ikke viser den skjulte mappe? Det er en mangel ved denne metode. Du kan bruge ls -d .*/
til at vise skjulte mapper, men det viser kun skjulte mapper.
brug kombination af ls-og grep-kommando
du kan altid stole på den gode gamle grep-kommando til filtrering af output til specifikt indhold.
hvis du lang liste indholdet, kan du identificere de mapper, fordi starte med d
.
du kan bruge grep til at filtrere indholdet, der starter med d:
ls -l | grep '^d'
men dette giver dig meget flere felter end bare katalognavnene:
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
brug kommandoen find til kun at liste mapper
Sådan bruges kommandoen find til kun at liste underkatalogerne:
find directory_path -maxdepth 1 -type d
jeg håber, du er bekendt med find-kommandoen. Jeg forklarer det alligevel.
med type d
beder du kommandoen find om kun at søge efter mapper.
med maxdepth 1
beder du find-kommandoen om kun at holde søgningen på det aktuelle niveau (og ikke gå ind i undermapperne).
Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
som du kan se i outputtet ovenfor, viser det også den skjulte mappe.
brug trækommando til kun at liste mapper
hvis dit mål kun er at liste mapperne, kan du også bruge trækommandoen.
som standard giver trækommandoen dig den komplette mappestruktur. Du kan ændre det for kun at vise mapper og kun på det aktuelle niveau.
tree -dai -L 1
- d-kig kun efter mapper
- a-Se også efter skjulte filer og mapper
- i-fjern træstrukturen fra displayet
- L 1-Gå ikke ind i underkatalogerne
her er output:
Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
brug af echo-kommando til notering af mapper
den usandsynlige kandidat? Du vil blive overrasket over at vide, at Echo command også kan bruges til at vise indholdet af en mappe. Prøv at bruge echo *
og se selv.
i lighed med kommandoen ls kan du også bruge mønsteret */
til kun at liste katalogerne i den aktuelle arbejdsmappe.
echo */
her er output, der er identisk med det, du fik med kommandoen ls -d
:
der kan være flere måder til kun at liste mapper, ikke filer. Faktisk kan de metoder, der diskuteres her, have nogle ifs og buts baseret på det, du leder efter.
hvis dit mål er at bare vise katalogerne, ville de fleste af de kommandoer, jeg diskuterede, fungere. Hvis du vil have noget mere specifikt som kun at få katalognavnet med skråstreg osv., skal du lave noget formatering alene.
jeg håber, du finder dette tip nyttigt. Spørgsmål og forslag er altid velkomne.