Linux FIND команда с примери

Знаете ли колко файла има в нова инсталация на Linux ? Ако използвате PopOS! Linux дистрибуция(Linux distribution) като пример, има над 31 000 файла. Това е преди да започнете да създавате документи, да съхранявате музика, да изтегляте PDF файлове(PDFs) или да организирате снимки.

Поради това намирането на правилния файл или папка в Linux , когато имате нужда от тях, се превръща в предизвикателство. В тази статия ще научите как да използвате командата FIND на Linux(Linux FIND) и ние ще ви дадем всички примери, които можем.

Синтаксис на командата на Linux FIND(Linux FIND Command Syntax)

Синтаксисът се отнася до начина, по който думите или командите се сглобяват. Точно(Just) както нормалното изречение може да се превърне в глупост чрез просто разбъркване на думите, командите могат да се провалят, ако не се използват в правилния синтаксис.

намери [път] [условия] [действия](find [path] [conditions] [actions])

Ето какво означава това:

find – стартира помощната програма Find в Linux

пътека(path ) – къде да гледам

условия(conditions ) – аргументи, които искате да приложите към търсенето

действия(actions ) – какво искате да направите с резултатите

Един прост пример, използващ и трите, изглежда така:

намирам . -име файл-sample.rtf -отпечатване(find . -name file-sample.rtf -print)

Както се досещате, това ще намери името на файла file-sample.rtf(file-sample.rtf)

Пътят с точка ( . ) указва find да търси в текущата директория и всички директории в нея. 

Условието -name казва на find да получи файла с това конкретно име.

Действието -print казва на FIND да покаже резултатите на екрана.

Точката и -print са по подразбиране за командата find. Така че той ще направи същото, ако не ги използвате. Така че, find -name file-sample.rtf ще ви даде същите резултати.

Linux НАМЕРИ В друга директория(Linux FIND In Another Directory)

Можете да търсите в директория, различна от тази, в която се намирате. Просто(Just) въведете пътя до директорията след FIND . Ако сте в корена и знаете, че файлът е някъде в директорията home/user , ще използвате:

find home/user -name file-sample.rtf

Това все още е рекурсивно търсене, така че ще премине през всяка директория под user .

Linux FIND Търсене в множество директории(Linux FIND Search Multiple Directories)

Ако искате да търсите в няколко директории наведнъж, просто ги избройте в командата, разделени с интервал.

find /lib /var /bin -name file-sample.rtf

Linux FIND без рекурсия или ограничена рекурсия(Linux FIND with No Recursion or Limiting Recursion)

Ако използвате командата FIND по-горе на основно ниво, тя ще прегледа всяка директория в системата. Така че, ако искате да се придържате само към текущата директория, използвайте опцията -maxdepth . Числото след -maxdepth указва Намерете колко дълбоко да отидете, преди да спрете. 

Използването на -maxdepth 1 означава само тази директория. 

find -name file-sample.rtf -maxdepth 1

Използването на -maxdepth 2 или по-голямо число означава да отидете толкова много нива по-дълбоко.

find -maxdepth 5 -name file-sample.rtf

Пример за заместващ знак за Linux FIND(Linux FIND Wildcard Example)

Командата FIND използва звездичката ( * ) като заместващ знак. Използвайте го за всяка част от името, в която не сте сигурни. Може да се използва повече от веднъж в името. Без типа на файла като част от името на файла, резултатите ще включват и директории, които съвпадат.

find home/user -name file*sample*

Linux НАМЕРИ по тип Пример(Linux FIND by Type Example)

За да търсите само файл или директория, използвайте опцията -type и съответния дескриптор. Има няколко, но най-често срещаните са файловете и директориите:

f – файл

г – директория

б – блоково устройство

в – символно устройство

l – символична връзка

s – гнездо

find home/user -name file*sample* -type d

Linux FIND Пример без значение на малки и големи букви(Linux FIND Case Insensitive Example)

За разлика от Windows , Linux се интересува дали една буква е главна или малка. Така че, ако искате да търси както File-Sample.rtf, така(File-Sample.rtf) и file-sample.rtf, използвайте опцията -iname .

find home/user -iname File-Sample.rtf

Linux FIND Няколко файла Пример(Linux FIND Several Files Example)

Да приемем, че искате да намерите .rtf и .html версиите на файл. Това може да се направи с една команда с помощта на -o (или) оператор. В някои дистрибуции може да се наложи да поставите имената в скоби, като ( -name file-sample.rtf -o -name file-sample.html)

find home/user -name file-sample.rtf -o -name file-sample.html

Linux НАМЕРЕТЕ файлове, които не съвпадат с име(Linux FIND Files That Don’t Match a Name)

Може би знаете, че има .html версия на даден файл, но не и ако има други. Можете да филтрирате .html версията от търсенето, като използвате опцията -not .

find home/user -name file-sample* -not -name *.html

Linux НАМИРАНЕ без резултати от грешки(Linux FIND Without Error Results)

В примера за намиране без рекурсия, забележете, че той изброява всяка директория, в която не може да търси, и правилния резултат. Това е досадно. Нека го спрем да показва всички тези директории „Отказано разрешение“ . (Permission)Комбинирайте го с друга терминална команда на Linux(Linux terminal command) , grep. Можете също да използвате Find с grep, за да намерите файлове с конкретни думи в тях(find files with specific words in them) .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

Нека разбием 2>&1 .

2 – представлява stderr , което е съкращение за извеждане на стандартни грешки. 

1 – представлява стандартен изход(stdout) , който е съкращение за стандартен изход

> – означава да се пренасочи какъвто изход е вляво от него към това, което е вдясно от него.

& – означава да се съберат.

Така че 2>&1 означава да вземете стандартните грешки и да ги пренасочите и след това да ги съберете заедно със стандартния изход в един изход.

Сега нека разгледаме | grep -v “Permission denied” .

| (наречена тръба) – казва на Linux да подава резултатите от всичко, което е вляво от него, на това, което е отдясно. Подава се на командата grep.

grep – е помощна програма за текстово търсене. 

-v – казва на grep да търси всичко, което не съвпада с текст вляво от -v. В този случай той казва на grep да намира само всичко, което не съдържа текста или низа, „ Разрешението(Permission) е отказано.“ Така че grep ще ви покаже само резултатите, които търсите, и всички грешки, които не съответстват на „ Разрешението(Permission) е отказано.“

Пример за Linux НАМЕРИ по разрешения(Linux FIND by Permissions Example)

За да използвате това добре, трябва да научите разрешенията за Linux(learn Linux permissions)

Всички примерни файлове имат разрешения 664, с изключение на един с разрешения 775. Използвайте опцията -perm , за да го намерите.

find Documents/ -name file-sample* -type f -perm 775

Linux НАМЕРИ по размер Пример(Linux FIND by Size Example)

Намирането на файлове по размер е удобно за получаване на тези огромни файлове, запълващи вашия твърд диск. Използвайте опцията -size, желания размер и един от следните наставки. Ако не се използва суфикс, -size по подразбиране е b . За да намерите файлове, равни на и по-големи от определен размер, поставете знака плюс (+) пред размера.

M – мегабайти

G – гигабайти

k – килобайти

b – блокове (512 байта – по подразбиране)

c – байтове

w – думи (два байта заедно)

find -size +500k

Linux FIND от собственик(Linux FIND by Owner)

Има два начина за намиране на файлове по собственик. Единият е от потребителското име на собственика, а другият е от групата на потребителя. За да намерите по потребителско име, използвайте опцията -user , последвана от потребителското име. За да намерите по потребителска група, използвайте -group , последвано от името на групата.

find -user groupname или find -user username

Linux FIND файлове по последен модифициран пример(Linux FIND Files by Last Modified Example)

За да намерите файлове, които са били променени или редактирани през последните X дни, използвайте -mtime , последвано от число. Поставянето на знак минус ( ) пред числото ще открие всичко, променено в рамките на толкова дни преди това. Знакът плюс ( + ) означава в рамките на толкова много дни преди сега. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

За да намерите по последна промяна в минути, използвайте опцията -mmin, последвана от броя минути. Използвайте + и – както по-горе.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

Linux FIND файлове по време на последен достъп Пример(Linux FIND Files by Last Accessed TIme Example)

Опцията, използвана за намиране на файлове въз основа на последното им отваряне, е -atime за дни и -amin за минути. Следвайте го с броя дни или минути, за да се върнете назад и използвайте знака + и – като по-голямо и по-малко от.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

Комбинирайте FIND с други команди на Linux(Combine FIND with Other Linux Commands)

Има един пример по-горе за използване на find с командата grep и можете да го използвате с много други. Можете да видите, че използването на find и други команди може да бъде много мощно и спестява огромно време. Представете си(Imagine) , че трябва да изтриете куп от определен тип файл. Вместо да търсите в експлоръра на файлове, просто създайте правилната команда и това става за секунди. Как ще използвате командата find сега?



About the author

Аз съм компютърен програмист и съм от над 15 години. Уменията ми са в разработването и поддържането на софтуерни приложения, както и в предоставянето на техническа поддръжка за тези приложения. Също така съм преподавал компютърно програмиране на гимназисти и в момента съм професионален инструктор.



Related posts