ls je jeden z nejpoužívanějších příkazů v Linuxu — a zároveň jeden z nejvíce podceňovaných.
V dnešním článku se tomuto super příkazu podíváme na zoubek. Kdo ho zná částečně, může si rozšířit obzory, kdo ho nezná - naučí se.
ls (list) slouží k výpisu obsahu adresáře. Zobrazuje soubory, složky, jejich vlastnosti a umožňuje filtrovat, řadit a formátovat výstup.
Je to základní nástroj pro orientaci v systému — ať už pracuješ v desktopovém Linuxu, nebo na serveru přes SSH.
- ls je základní nástroj pro orientaci v systému
- umožňuje zobrazit skryté soubory, detailní informace, řadit podle času nebo velikosti
- kombinace ls -lha je nejpraktičtější pro každodenní práci
- výstup ls -l je skvělý pro výuku práv a struktury souborů
Základní použití
Výpis aktuálního adresáře (toho, kde momentálně jsem)
ls
Výpis konkrétní cesty
ls /etc
ls ~/Dokumenty
Užitečné přepínače (s příklady)
ls -l — detailní výpis
Zobrazí soubory včetně práv, vlastníka, velikosti a data změny.
ls -l
Výstup je ideální pro vysvětlení práv (rwx), typů souborů a vlastníků. Viz můj starší článek.
ls -a — zobrazí i skryté soubory
Skryté soubory začínají tečkou (.bashrc, .git, .ssh, aj.).
ls -a
ls -lh — lidsky čitelné velikosti
Velikosti v kB/MB/GB místo bajtů.
ls -lh
Kombinace přepínačů
Linux umožňuje kombinovat přepínače do jednoho:
ls -lha
Tohle je nejpoužívanější varianta na serverech — kompletní, přehledný výpis.
ls -lt — řazení podle času
Nejnovější soubory nahoře.
ls -lt
ls -ltr — nejstarší nahoře
r = reverse (obrácené pořadí).
ls -ltr
ls -R — rekurzivní výpis
Vypíše i obsah podadresářů.
ls -R
Barevný výpis
Většina distribucí má barvy zapnuté automaticky.
Pokud ne, zapneme jej tímto příkazem:
ls --color=auto
Barvy pomáhají odlišit:
- adresáře
- spustitelné soubory
- symlinky
- archivy
Jak ls číst (stručný rozbor výstupu ls -l)
Ukázka:
drwxr-xr-x 2 root root 4096 May 5 10:20 logs
-rw-r--r-- 1 root root 512 May 5 09:15 config.txt
Vysvětlení:
- d = adresář (pokud je tam znak -, jde o soubor)
- rwxr-xr-x = práva (vlastník / skupina / ostatní)
- root root = vlastník a skupina
- 4096 = velikost v B (bajtech)
- May 5 10:20 = datum poslední změny
- logs = název položky
Podrobněji viz můj starší článek.
Praktické příklady pro běžnou práci
1) Najít největší soubory v adresáři
ls -lhS
2) Zobrazit jen adresáře
ls -l | grep "^d"
3) Zobrazit jen soubory s příponou .log
ls *.log
4) Zobrazit soubory upravené dnes
ls -lt --time-style=+%Y-%m-%d | head
Další praktické příklady použití příkazu ls
Následující příklady pomohou při situacích, které lidé řeší při práci na serveru, v terminálu nebo při skriptování.
1) Zobrazit pouze soubory (bez adresářů)
ls -p | grep -v /
-p přidá lomítko za adresáře, takže je můžeš snadno odfiltrovat.
2) Zobrazit pouze adresáře (čistší varianta)
ls -d */
Rychlé, jednoduché, bez grepování.
3) Zobrazit soubory podle vzoru (pattern matching)
ls *.txt
ls img_*.jpg
ls backup-2024-??-??.tar.gz
Hodí se při práci s logy, exporty nebo fotkami.
4) Zobrazit jen prázdné soubory
ls -l | awk '$5 == 0'
$5 je velikost souboru — ideální pro čištění.
5) Zobrazit jen spustitelné soubory
ls -l | grep "^-..x"
Hodí se při hledání skriptů nebo binárek.
6) Zobrazit soubory změněné za poslední hodinu
ls -lt --time-style=long-iso | head
Skvělé při debugování nebo hledání posledních změn.
7) Zobrazit absolutní cesty všech položek
ls -d "$PWD"/*
Užitečné při skriptování, kdy potřebuješ plné cesty.
8) Zobrazit velikosti adresářů (kombinace s du)
ls to neumí přímo, ale často se to používá společně:
du -sh */
9) Zobrazit symlinky a jejich cíle
ls -l | grep "^l"
10) Barevný výpis vynucený i v pipe
Normálně barvy v pipe zmizí. Tohle je obejde:
ls --color=always | less -R
11) Zobrazit položky seřazené podle velikosti
ls -lS
12) Zobrazit položky seřazené podle přípony
ls -lX
13) Zobrazit položky seřazené podle verze (užitečné pro soubory typu v1, v2…)
ls -lv
15) Zobrazit položky s plnou časovou informací (včetně sekund)
ls -l --full-time
16) Zobrazit položky s inode číslem
ls -li
Hodí se při řešení problémů se symlinky nebo hardlinky.
.bashrc:
alias ll='ls -lha'
Pokročilé příklady použití ls
Tady jsou pokročilejší, technicky zajímavé a praktické příklady, které se hodí pro detailnější práci v systému Linux. Tyhle příkazy už nejsou „běžné“, ale ukazují sílu ls v kombinaci s dalšími nástroji, filtrováním, skriptováním a správou systému.
1) Výpis souborů podle práv (např. jen soubory se spustitelným bitem)
ls -l | awk '$1 ~ /^-..x/'
Filtruje jen soubory, které mají spustitelný bit pro vlastníka.
2) Najít soubory, které mají „příliš otevřená“ práva (např. 777)
ls -l | awk '$1 ~ /rwxrwxrwx/'
Hodí se při auditu bezpečnosti. Funguje i na adresáře.
3) Zobrazit soubory podle typu (sockety, FIFO, symlinky…)
ls -l | grep "^s" # sockety
ls -l | grep "^p" # FIFO
ls -l | grep "^l" # symlinky
4) Zobrazit soubory s přesným časovým formátem (ISO 8601)
ls -l --time-style=long-iso
Ideální pro logování a skripty.
5) Výpis s tříděním podle inode (užitečné při řešení hardlinků)
ls -li | sort -n
6) Zobrazit počet souborů v adresáři (bez find)
ls -1 | wc -l
7) Zobrazit absolutní cesty všech souborů včetně skrytých
ls -A | sed "s|^|$PWD/|"
8) Zobrazit jen prázdné adresáře
ls -l | awk '$1 ~ /^d/ && $5 == 0'
9) Zobrazit soubory podle velikosti, ale jen nad určitou hranici
ls -l | awk '$5 > 1000000'
Zobrazí soubory větší než 1 MB.
10) Zobrazit soubory podle času změny (např. posledních 10 minut)
ls to neumí přímo, ale kombinace s find je běžná:
find . -maxdepth 1 -mmin -10 -exec ls -l {} \;
11) Zobrazit soubory seřazené podle verze (v1, v2, v10…)
ls -lv
-v je „natural sort“ — správně řadí čísla.
12) Zobrazit soubory podle rozšířených atributů (xattrs)
ls -l --full-time --context
Zobrazí SELinux kontexty a další metadata.
13) Zobrazit symlinky včetně cílové cesty a inode cíle
ls -l | awk '/^l/ {print $9, "->", $11}'
14) Zobrazit jen soubory, které nejsou symlinky
ls -l | grep -v "^l"
15) Zobrazit soubory podle typu MIME (kombinace s file)
ls -1 | xargs file --mime-type
16) Zobrazit soubory s barvami i při přesměrování (vynucené)
ls --color=always | less -R
17) Výpis s přesným časem včetně časové zóny
ls -l --time-style="+%Y-%m-%d %H:%M:%S %Z"
18) Zobrazit soubory podle vlastníka nebo skupiny
ls -l | awk '$3 == "root"'
ls -l | awk '$4 == "www-data"'
19) Zobrazit soubory podle typu (jen regular files)
ls -l | grep "^-"
20) Zobrazit soubory s počtem hardlinků
ls -l | awk '{print $2, $9}'
Expertní příklady použití ls
Tady přidávám EXPERTNÍ příklady, které jdou ještě dál než pokročilé.
Tohle jsou věci, které používají administrátoři při ladění výkonu, řešení problémů se souborovým systémem, inode strukturou, porovnáváním adresářů, skriptováním a automatizací.
1) Porovnání dvou adresářů pomocí ls + diff
Rychlé zjištění rozdílů mezi dvěma složkami:
diff <(ls -1A dir1) <(ls -1A dir2)
Výsledek ukáže, co přibylo, ubylo nebo se změnilo.
2) Detekce souborů se stejným inode (hardlinky)
ls -li | awk '{print $1, $9}' | sort | uniq -d
Zobrazí inode čísla, která se opakují → tedy hardlinky.
3) Zobrazení souborů podle změny inode (diagnostika FS)
ls -li --time=ctime | sort -k10,10
Hodí se při hledání souborů, které byly přesunuty nebo měnily metadata.
4) Výpis souborů podle nanosekundového timestampu
ls -l --time=mtime --time-style="+%Y-%m-%d %H:%M:%S.%N"
Užitečné při ladění závodních podmínek (race conditions) ve skriptech.
5) Zobrazení souborů podle ACL práv (pokud FS podporuje)
ls -l --full-time --author
Zobrazí autora, čas, práva, ACL a další metadata.
6) Zobrazení souborů podle SELinux kontextu
ls -lZ
Neocenitelné při řešení problémů s webovými servery na RHEL/CentOS/Fedora.
7) Výpis souborů podle typu blokového zařízení
ls -l /dev | grep "^b"
Rychlá diagnostika disků a blokových zařízení.
8) Zobrazení souborů podle major/minor čísel (device nodes)
ls -l /dev | awk '{print $5, $6, $10}'
Užitečné při práci s udev pravidly.
9) Výpis souborů seřazených podle inode (FS debugging)
ls -li | sort -n -k1,1
Pomáhá odhalit fragmentaci nebo nečekané chování FS.
10) Zobrazení souborů podle změny práv (ctime)
ls -lc
ctime ≠ mtime → změna metadat, ne obsahu.
11) Výpis souborů podle změny vlastníka
ls -l --time=ctime | grep "root"
Hodí se při auditu bezpečnosti.
12) Zobrazení souborů podle velikosti v blocích (disk usage)
ls -s
Ukazuje skutečnou alokaci na disku, ne jen velikost souboru.
13) Zobrazení souborů s rozšířenými atributy (xattrs)
ls -l --full-time --context
Zobrazí SELinux, AppArmor, extended attributes.
14) Výpis souborů podle času přístupu (atime)
ls -lu
Užitečné při hledání „mrtvých“ souborů.
15) Výpis souborů podle času vytvoření (birth time)
Pokud FS podporuje (např. ext4 s journalingem):
ls -l --time=birth
16) Zobrazení souborů podle velikosti bloků (optimalizace FS)
ls -l --block-size=1M
17) Výpis souborů s přesnou epoch časovou značkou
ls -l --time-style=+%s
Perfektní pro logování a porovnávání timestampů.
18) Zobrazení souborů podle typu MIME (kombinace s file)
ls -1 | xargs file --mime-type
19) Výpis souborů podle počtu hardlinků
ls -l | awk '$2 > 1'
20) Výpis souborů podle toho, zda jsou sparse (děravé) soubory
ls -ls | awk '$1 $lt; ($6/1024)'
Ukáže soubory, které zabírají méně místa, než je jejich logická velikost.
Vše je samozřejmě dohledatelné v manuálu příkazu ls. Zajisté tam najdete ještě další možnosti použití tohoto příkazu.