Hledáte způsob, jak organizovat soubory a provádět s nimi nějaké operace? V programování existuje mnoho případů, kdy potřebujete seřadit některá data, například seznam souborů. Řazení souborů pomocí Bash sort
a ls
příkazy vám pomohou udržet věci uspořádané.
V tomto tutoriálu se naučíte základy třídění souborů a obsahu souborů.
Pojďme třídit!
Předpoklady
Tento tutoriál používá Ubuntu 20.04, ale bude fungovat jakákoli distribuce Linuxu.
Bash řadit soubory abecedně
V Linuxu existuje spousta způsobů, jak třídit soubory, ale pojďme se pustit do nejběžnějšího způsobu, řazení souborů podle abecedy.
Spusťte svůj terminál a spusťte ls -l
příkazem níže získáte seznam souborů v adresáři ve vzestupném pořadí. -l
příznak říká ls
příkaz k vytištění vráceného výstupu ve formátu dlouhého seznamu.
ls -l

Ve výchozím nastavení je
ls
příkaz vypíše soubory ve vzestupném pořadí. Chcete-li změnit pořadí řazení, předejte-r
příznak nals -l
příkaz, jako je tento:ls -lr
. Předání-r
příznak nals -l
příkaz se vztahuje na další příklady v tomto tutoriálu.
Použití Bash k řazení souborů podle velikosti
Místo řazení souborů podle abecedy můžete chtít řadit soubory podle velikosti souboru. Řazení souborů podle velikosti je užitečné, když upřednostňujete zobrazení nejmenších nebo největších souborů v seznamu.
Chcete-li seřadit soubory podle velikosti, předejte -S
příznak sdělit ls
příkaz seřadit seznam souborů podle velikosti souboru.
Spuštěním příkazu níže zobrazíte seznam souborů (ls
) seřazené podle velikosti souboru ve formátu dlouhého seznamu (-lS
).
ls -lS
Níže můžete vidět příkaz seřadit soubory podle velikosti v sestupném pořadí (velikost od největší po nejmenší).
Chcete-li obrátit pořadí řazení (od nejmenšího k největšímu), přidejte
-r
příznak, jako je tento:ls -lSr

Seřadit soubory podle času úpravy pomocí řazení Bash
Když přejdeme od řazení souborů podle velikosti, můžete se setkat s případem použití, kdy potřebujete seřadit soubory podle času, kdy byly upraveny. Například jste zapomněli název souboru, který jste vytvořili, a pamatujete si pouze čas, kdy jste soubor naposledy upravili.
Spusťte níže uvedený příkaz, kde je -t
parametr říká ls
příkaz k řazení souborů podle času úpravy.
ls -lt

Řazení souborů podle přípony souboru
Když hledáte soubor s konkrétním typem souboru, je řazení souborů podle přípony ideálním řešením.
Chcete-li zobrazit seznam souborů, spusťte příkaz níže (ls
) v pracovním adresáři a seřadit podle jejich přípon (-lx
).
ls -lX
Všimněte si níže, že příkaz seřadil soubory se stejnou příponou ve vzestupném pořadí na základě jejich názvů.

Řazení obsahu v textovém souboru
Nyní jste se naučili různé metody řazení souborů v adresáři. Přesun zaměření z ls
zkuste spustit sort
příkaz. sort
příkaz třídí obsah souboru podle příznaku, který budete přidávat. Nejprve však potřebujete soubor s obsahem, který upravíte.
Spuštěním příkazu níže vytvořte textový soubor s názvem ~/data/fruits.txt který obsahuje názvy ovoce. -e
flag umožňuje interpretaci zpětného lomítka pro zapsání každého slova na nový řádek (\n
).
echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt
Nyní spusťte níže uvedený příkaz na sort
každé slovo v fruits.txt
.
sort fruits.txt
Níže můžete vidět, že obsah souboru je seřazen vzestupně.

Bez jakýchkoli příznaků,
sort
příkaz standardně třídí obsah souboru ve vzestupném pořadí. Chcete-li obrátit pořadí řazení, přidejte-r
flag příkazu sort, takto:sort -r fruits.txt
. Řazení v opačném pořadí přidáním-r
příznak se vztahuje na další příklady v tomto tutoriálu.
Řazení seznamu čísel v textovém souboru
Příkaz k řazení čísel je podobný řazení textů v souboru, ale přidáte -n
místo toho vlajka. Nejprve vytvořte soubor, abychom si ukázali, jak numericky třídit obsah souboru.
Spuštěním níže uvedeného příkazu vytvořte soubor s názvem ~/data/scores.txt který obsahuje náhodná čísla, každé na novém řádku.
echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt
Nyní spusťte níže uvedený příkaz na sort
čísla (-n
) v souboru ~/data/scores.txt soubor.
sort -n scores.txt
Níže můžete vidět čísla uvedená v řádcích od nejmenšího po největší číslo.

Řazení seznamu čísel verzí v textovém souboru
Možná máte seznam čísel verzí v textovém souboru, který chcete seřadit. Pokud ano, přidejte --version-sort
volba udělá své.
Chcete-li ukázat, jak --version-sort
možnost funguje, nejprve vytvořte textový soubor.
Spuštěním níže uvedeného příkazu vytvořte textový soubor s názvem ~/data/versions.txt s náhodnými čísly verzí, každé na novém řádku (\n
).
echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt
Nyní spusťte níže uvedený příkaz na sort
čísla verzí (--version-sort
) v souboru versions.txt soubor. --field-separator
volba říká sort
příkaz, že čísla v každé verzi jsou oddělena tečkou (.
). Oddělovač polí můžete změnit na jakýkoli znak, který odděluje čísla na verzích uvedených ve vašem textovém souboru.
sort --version-sort --field-separator=. versions.txt

Bash Sort pro vyhledání a řazení souborů pomocí přípony souboru
Spouštěli jste jednotlivé příkazy (buď ls
nebo sort
) v předchozích příkladech. Ale při programování může být často nutné použít dva nebo více příkazů dohromady. Jak? Zřetězením jednoho příkazu do druhého.
Spusťte níže uvedený příkaz na find
všechny soubory markdown (-iname "*.md"
) v pracovním adresáři (.
) a seřadit je v abecedním sestupném pořadí (sort -r
). Zkuste najít a seřadit další soubory změnou "*.md"
na jinou příponu souboru.
find . -iname "*.md" | sort -r

Pokud dáváte přednost uložení seřazeného výstupu do textového souboru namísto standardního výstupu na konzoli, přidejte
--output
možnost, jako je tato:find . -iname "*.md" | sort -r --output=sorted.txt
.--output
volba říkásort
příkaz k vytvoření výstupního souboru pro seřazený seznam souborů.
Závěr
Motivem tohoto článku bylo naučit vás různé způsoby řazení pomocí příkazů Bash na počítači se systémem Linux. Nyní jste se naučili třídit seznam souborů a třídit obsah souborů. Kromě toho byste také měli vědět, jak zpracovat různé příkazy pro složitější třídění souborů.
S těmito nově nalezenými znalostmi jako odrazovým můstkem, proč nevytvářet skripty pro automatizaci seznamů souborů a třídění obsahu souborů?