V podstatě všechno v Linuxu je soubor. Ale předtím, než budete moci upravit soubor, musíte být schopni jej najít ve vašem systému.
O vyhledávání souborů v systému Linux
V tomto článku stručně podrobně popisuji dva příkazy s užitečnými příklady pro vyhledávání souborů pomocí terminálu. Tyto dva příkazy jsou příkaz najít a příkaz lokalizovat . Rozdíl mezi těmito dvěma příkazy je v tom, že find provádí vyhledávání v reálném čase a locate používá pro vyhledávání indexovanou databázi. To znamená, že příkaz locate je obvykle rychlejší, ale předpokládá, že hledaný soubor je v jeho indexové databázi a že databáze se obvykle vytváří v noci, takže novější soubory příkaz locate nenajde. Ve svém prostředí používám Debian 11. Ale příkazy by měly být stejné na jiných distribucích Linuxu.
Pokud chcete hledat soubory podle jejich obsahu místo názvu souboru, podívejte se místo toho na příkaz grep.
Vyhledávání souborů a adresářů pomocí příkazu find
Vyhledat soubor v aktuálním adresáři
Pokud chcete najít soubor pomocí příkazu find, proveďte na svém terminálu jednu z následujících akcí.
find <filname>
předpokládejme,
find test.txt
Toto prohledá soubor v aktuálním adresáři, na kterém pracujete.
Vyhledat soubor v jiném adresáři
Nyní, pokud chcete najít soubor v konkrétním adresáři. Úplný příkaz by měl vypadat takto,
find <path of directory/filename>
Předpokládejme, že chcete prohledat soubor s názvem „test.txt“ v Dokumentech, celý příkaz by měl vypadat následovně.
find Documents/test.txt
Najít soubory podle přípony souboru
Nyní, pokud chcete najít všechny textové soubory ve vašem aktuálním nebo konkrétním adresáři, příslušné příkazy by měly vypadat následovně.
find *.txt
find <path of directory/*.txt>
Předpokládejme, že chcete prohledat všechny textové soubory v cestě Documents/Karim, celý příkaz by měl vypadat takto.
find Documents/Karim/*.txt
Najít soubory podle názvu
Případně můžete použít přepínač -name, když chcete hledat soubor podle názvu.
find <path> -name <name of file you want to search>
Předpokládejme, že chcete prohledat soubor s názvem test1.txt v Documents/Karim. Úplný příkaz by měl vypadat takto.
find Documents/Karim -name test1.txt
Pokud chcete vyhledat konkrétní soubor v aktuálním adresáři, na kterém pracujete. Dát . na cestě, jak je znázorněno v příkladu.
find . -name test1.txt
Při hledání souborů ignorujte malá a velká písmena
Pokud chcete prohledat soubor a chcete ignorovat velká a malá písmena, použijte přepínač -iname. Úplný příkaz by měl vypadat následovně.
find . -iname test.txt
Najít soubory podle typu souboru, např. symbolické odkazy
Chcete-li vyhledat konkrétní typ souboru, použijte volbu -type. Úplný příkaz by měl vypadat následovně.
find <path> -type <c>
- c označuje typ souboru, který následují.
- b blokovat (buffered) special
- c speciální znak (bez vyrovnávací paměti)
- d adresář
- p pojmenované potrubí
- f běžný soubor
- l symbolický odkaz
- D dveře (Solaris)
Předpokládejme, že chcete prohledávat běžné soubory v Documents/Karim, spusťte následující příkaz.
find Documents/Karim -type f
Pokud chcete hledat běžné soubory ve vašem aktuálním adresáři. Úplný příkaz by měl vypadat následovně.
find . -type f
Pokud chcete prohledávat soubory s více příponami, použijte znaky c oddělené čárkami.
Řekněme, že chcete najít všechny běžné prázdné soubory ve vašem aktuálním adresáři.
find . -type f -empty
Předpokládejme, že chcete najít všechny prázdné adresáře ve svém aktuálním adresáři, použijte volby -d a -empty v příkazu find následovně.
find . -type d -empty
Najít soubory podle velikosti
Pokud chcete najít soubory s konkrétní velikostí, můžete použít parametr -size. Můžete použít následující příponu s jejich přesnou velikostí.
- c :bajtů
- k :kilobajty
- M :Megabajty
- G :Gigabajty
- b :blok 512 bajtů
Předpokládejme, že chcete najít všechny soubory ve vašem aktuálním adresáři, které mají přesně 50 bajtů. Musíte provést následující příkaz.
find . -size 50c
Předpokládejme, že chcete ve svém aktuálním adresáři najít všechny soubory, které mají více než 50 bajtů nebo méně než 50 bajtů, musíte provést jeden z následujících příkazů.
find . -size +50c
find . -size -50c
Najít soubory podle vlastníka (uživatele)
Pokud chcete vyhledat soubor vlastněný konkrétním uživatelem, můžete použít volbu -user. Syntaxe příkazu by měla být následující.
find <path> -user <username>
Předpokládejme, že chcete prohledat soubor ve vašem aktuálním adresáři vlastněném vituxem. Příkaz by měl vypadat následovně.
find . -user vitux
Hledání souborů pomocí příkazu Locate
Druhým je příkaz locate, který můžete použít k vyhledávání souborů a adresářů ve vašem systému.
Nejprve musíte do svého počítače Debian 11 nainstalovat vyhledávací nástroj. Přihlaste se pomocí root a spusťte na svém terminálu následující příkaz. Až budete požádáni o potvrzení, stiskněte Y na klávesnici.
apt-get install locate
Počkejte na dokončení operace.
Locate je rychlejší příkaz a spoléhá na databázi souborového systému. Aktualizuje se jednou denně, ale pokud jej chcete aktualizovat ručně, spusťte na svém terminálu s oprávněními root následující příkaz.
updatedb
Chcete-li vyhledat soubor pomocí příkazu locate ve vašem aktuálním adresáři, proveďte na svém terminálu následující.
locate <filename>
Předpokládejme, že název mého souboru je test.txt. Úplný příkaz by měl vypadat následovně.
locate test.txt
Můžete použít volbu -i k ignorování velikosti písmen v názvu souboru.
locate -i <filename>
nebo
locate -i test.txt
Příkazy locate a find jsou užitečné při hledání souborů. Je jen na vás, který z příkazů nejčastěji používáte. Lze je rozšířit o další příkazy pomocí pipe, wc, sort a grep atd.