V nedávném článku na Opensource.com představil Lewis Cowles find
příkaz.
find
je jedním z nejvýkonnějších a flexibilnějších programů příkazového řádku v každodenní sadě nástrojů, takže se vyplatí věnovat tomu trochu více času.
Minimálně find
jde cestou najít věci. Například:
find /
najde (a vytiskne) každý soubor v systému. A protože je vše soubor, získáte spoustu výstupů, které budete muset protřídit. To vám pravděpodobně nepomůže najít to, co hledáte. Argument cesty můžete změnit, abyste věci trochu zúžili, ale stále to není o nic užitečnější než použití ls
příkaz. Takže musíte přemýšlet o tom, co se snažíte najít.
Možná budete chtít najít všechny soubory JPEG ve svém domovském adresáři. -name
argument vám umožňuje omezit výsledky na soubory, které odpovídají danému vzoru.
find ~ -name '*jpg'
Ale počkej! Co když některé z nich mají příponu velkými písmeny? -iname
je jako -name
, ale nerozlišují se v něm velká a malá písmena.
find ~ -iname '*jpg'
Skvělý! Ale schéma názvu 8.3 je z roku 1985. Některé obrázky mohou mít příponu .jpeg. Naštěstí můžeme kombinovat vzory s "nebo" reprezentovaným -o
.
find ~ ( -iname 'jpeg' -o -iname 'jpg' )
Jsme stále blíž. Ale co když máte nějaké adresáře, které končí na jpg? (Proč jste adresář pojmenovali bucketofjpg
místo pictures
je mimo mě.) Náš příkaz můžeme upravit pomocí -type
argument hledat pouze soubory.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f
Nebo byste možná chtěli najít tyto podivně pojmenované adresáře, abyste je mohli později přejmenovat:
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d
Ukázalo se, že jste v poslední době hodně fotili, takže to zúžíme na soubory, které se za poslední týden změnily.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Časové filtry můžete provádět na základě času změny stavu souboru (ctime
), čas úpravy (mtime
), nebo čas přístupu (atime
). Ty jsou ve dnech, takže pokud chcete jemnější kontrolu, můžete ji vyjádřit v minutách (cmin
, mmin
a amin
, respektive). Pokud přesně neznáte požadovaný čas, pravděpodobně před číslo vložíte +
(více než) nebo –
(méně než).
Ale možná vás vaše obrázky nezajímají. Možná vám dochází místo na disku, takže chcete najít všechny ty obrovské soubory (definujme to jako „větší než 1 gigabajt“) v log
adresář:
find /var/log -size +1G
Nebo možná budete chtít najít všechny soubory vlastněné bcottonem v /data
:
find /data -owner bcotton
Můžete také hledat soubory na základě oprávnění. Možná chcete ve svém domovském adresáři najít všechny světově čitelné soubory, abyste se ujistili, že je nesdílíte.
find ~ -perm -o=r
Tento příspěvek pouze poškrábe povrch toho, co find
může udělat. Kombinace testů s booleovskou logikou vám může poskytnout neuvěřitelnou flexibilitu při hledání přesně těch souborů, které hledáte. A s argumenty jako -exec
nebo -delete
, můžete find
podnikněte kroky na základě toho, co... najde. Ať máte nějaké oblíbené find
výrazy? Podělte se o ně v komentářích!