CLI Ninja – “Find” kommandoen

Skrevet af: Patrick Kerwood

Find kommandoen er et super nyttigt tool til at finde en specifik fil, flere filer eller vil eksekvere en kommando på flere filer der opfylder samme kriterier.

Et basis eksempel på en find kommando er som nedenstående.
find /home/kerwood -name "Photo*"

/home/kerwood er mappen den skal lede i og Photo* er søge strengen. -name er case sensitive, så den vil kun finde filer og mapper der starter med stort P. For at lave søge strengen case insensitive, skal du bruge -iname istedet.

Stjerne tegnet (*) er et wildcard, dvs. at find finder i dette tilfælde alle filer der starter med “Photo” og er ligeglad med resten af filnavnet.

Overstående kommando vil finde både mapper og filer i søgningen. Du kan specifiere det med -type, d for directory eller f for file.

find /home/kerwood -type f -name "Photo*"
Eksempler

Der er rigtig mange argumenter, så du kan finde de filer du mangler, meget specifikt. Nedenstående er en håndfuld af dem jeg bruger engang i mellem, med en kort beskrivelse.

Finder filer der tilhører en bestemt bruger.
find /home/kerwood -type f -name "Photo*" -user bruger-navn

Finder filer der tilhører en bestemt gruppe.
find /home/kerwood -type f -name "Photo*" -group gruppe-navn

 
I de næste 5 eksempler kan du ændre plus tegnet til et minus for finde filer der er under den givne værdi, istedet for over. Du kan også tilføje begge værdier for at finde filer imellem dem, eg.
-mtime +5 -mtime -10

Finder alle filer der har været accessed for mindst 5 dage siden.
find /home/kerwood -type f -name "Photo*" -atime +5

Finder alle filer der har været modified for mindst 5 dage siden.
find /home/kerwood -type f -name "Photo*" -mtime +5

Finder alle filer der har været accessed for mindst 20 minuter siden.
find /home/kerwood -type f -name "Photo*" -amin +20

Finder alle filer der har været modified for mindst 20 minuter siden.
find /home/kerwood -type f -name "Photo*" -mmin +20

Finder filer der er større end 50MB. G = GB, M = MB, k = KB.
find /home/kerwood -type f -name "Photo*" -size +50M

Eksekver en kommando på alle fundne filer

Du kan eksekvere en kommando på alle fundne filer ved at bruge -exec kommando {} \;. Forestil dig at stien til den fundne fil, bliver smidt i mellem tuborg klammerne ( {} ). Argumentet exec skal altid afsluttes med \;.

Et eksempel på overstående er hvis du vil slette alle filer der starter med “Photo”.
find /home/kerwood -type f -name "Photo*" -exec rm -v {} \;

Eller hvis du vil ændre permissions på fundne filer.
find /home/kerwood -type f -name "Photo*" -exec chmod 755 {} \; You catch the drift.

Find er et fantastisk værktøj til at finde meget specifikke filer og evt. masse behandle dem.


8 maj 2014   | Alle · Bash

Leave a Reply