Командата find ни помага да намерим определен файл в директория. Използва се за намиране на списък с файлове за различни условия като разрешение, собственост на потребителя, модификация, дата/час, размер и др.
В Unix-подобни и други операционни системи командата find е помощна програма от командния ред, която намира файлове на базата на няколко зададени от потребителя формата и или отпечатва името на пътя на всички съвпадащи обекти, или, ако са поискани други действия, прилага това действие на всички съответстващи обекти.
Той започва търсене от желано начално местоположение и след това преминава рекурсивно през директориите (възлите) на йерархична структура (обикновено дърво). Командата find може да търси и преминава от различни файлови дялове, принадлежащи към едно или повече устройства за съхранение в началната директория.
Форматът за търсене съдържа модел за съпоставяне с името на файла или времевия диапазон за съпоставяне с времето на модификация или времето за достъп до файла. Командата find предоставя списък на всеки файл в текущата работна директория по подразбиране. Потребителите обаче могат да ограничат търсенето до желано максимално ниво при началната директория.
Свързаните програми за локализиране прилагат индексирана файлова база данни, получена от командата fine, за да предоставят по-бърза техника за търсене на цялата файлова система по име.
Помощната програма за намиране идва по подразбиране с повечето от Linux дистрибуции , така че не е необходимо да инсталираме допълнителен пакет. Това е една от най-важните и използвани команди на Linux система.
find
Двете опции определят как find трябва да разглежда символните връзки. Естеството по подразбиране е никога да не се преследват символни връзки. Знамето, т.е. -Л , ще доведе до търсене на символни връзки. Знамето, т.е. -З , просто ще преследва символни връзки, докато продължава с аргументите на командния ред. Флаговете са споменати в стандарта POSIX за командата find. Основното разширение е флаг, т.е. -П , за изрично деактивиране на следната символна връзка.
Поне пътят трябва да предугажда израза. Командата find може вътрешно да интерпретира заместващи символи и командите трябва внимателно да бъдат поставени в кавички, за да се управлява глобирането на обвивката.
Компонентите на израза са изолирани от границата на аргумента на командния ред, обикновено обозначена като интервал в синтаксиса на обвивката. Те се разглеждат от лявата към дясната страна. Те могат да включват логически компоненти като ИЛИ и И, както и предикати (действия и филтри). GNU find съдържа няколко други функции, които не са споменати от POSIX.
Следните символи се използват за указване на директорията:
(.) : За текущо име на директория
(/) : За основната директория
Кратка история на командата Find
Командата find се появи във версия 5 Unix като елемент на Работна маса за програмист проект и е уточнен от Дик Хейт с cpio, които са разработени да се използват заедно.
Първоначално изпълнението на GNU на командата find беше определено от Ерик Декър . По-късно е разработен от Дейвид Макензи, Тим Ууд , и Джей Плет . Освен това командата find е пренесена към IBM i OS.
java версия linux
Предикати
Широко използвани първични са:
Намерете по подразбиране прилагането на -print в случай, че условията са верни, ако изразът не използва нито едно от -ok, -exec, -print или -print0.
python rstrip
Оператори
Операторите подобряват командните изрази за намиране. Те са споменати в низходящ ред:
- expr1 expr2 (или expr1 -a expr2 : И. expr2 не се оценява, ако expr1 е невярно.
- expr1 -o expr2 : ИЛИ. expr2 не се оценява, ако expr1 е вярно.
Примери за командата find
Нека видим следните примери за командата find:
- Намерете файлове по име
- Намерете файлове по тип
- Намерете по-нови файлове
- Намерете и изтрийте файл
- Намерете директория
- Намерете файлове по време на модификация
- Намерете файлове с разрешение
- Намерете и заменете файлове
- Намерете текст в множество файлове
Намерете файлове по име
Можем да търсим във всички файлове, завършващи с разширение „.txt“. За да направите това, изпълнете командата по-долу:
find . -name '*.txt'
Горната команда ще изведе всички текстови файлове от текущата работна директория. Помислете за резултата по-долу:
От горния резултат всички файлове с разширение „.txt“ са изброени с командата find.
Намиране на файлове по тип
Параметърът '-type' се използва за указване на типа на файла.
Някои от типовете файлове са както следва:
- f: обикновен файл
- d: директория
- l: символни връзки
- c: символни устройства
- b: блокови устройства
Помислете за командата по-долу:
find . -type d -name '*.bak'
Горната команда ще изброи всички директории с разширение „.bak“. Помислете за резултата по-долу:
От горния изход, командата 'find . -type d -name '*.bak' показва всички директории, завършващи с '.bak'.
Намерете по-нови файлове
Параметърът '-newer' помага при търсене на файлове, които са по-нови от споменатия файл. Помислете за командата по-долу:
find . -newer msg.txt
Горната команда ще покаже всички файлове, които са по-нови от „msg.txt“ от текущата работна директория. Помислете за резултата по-долу:
От горния резултат всички показани файлове са по-нови от файла „msg.txt“.
Изтегляне на видеоклипове от youtube vlc
Намерете и изтрийте файл
Опцията '-delete' се използва за изтриване на определен файл. Трябва да сме много внимателни, докато използваме тази команда, защото няма опция за отмяна, ако веднъж бъде изпълнена. Помислете за командата по-долу:
find . -name Demo.txt -delete
Горната команда ще изтрие файла „Demo.txt“ от текущата работна директория. Помислете за резултата по-долу:
Намерете директория
Опцията 'type -d' се използва за намиране на директория. Помислете за командата по-долу:
find . type -depth -name Newdirectory
Горната команда ще намери местоположението „Нова директория“. Помислете за резултата по-долу:
Намерете файлове по време на модификация
Опцията '-mtime', последвана от броя на дните, се използва за намиране на файловете по модификация. Броят на дните може да бъде положителен или отрицателен. Отрицателната стойност ще се използва за по-малко, както -1 се използва за последния ден и по подобен начин +1 ще намери файла за преди повече от един ден. Помислете за командата по-долу:
find ./Newdirectory -mtime -1
Горната команда ще намери файловете, които са били променени през последния ден. Помислете за резултата по-долу:
Намерете файлове с разрешение
Опцията '-perm' се използва за намиране на файлове с разрешение. Изпълнете командата find с опцията '-perm' и предайте необходимата стойност. Помислете за командата по-долу:
find ./ -perm 777
Горната команда ще изброи файловете от посочената директория, които всеки може да чете, пише и изпълнява.
Намерете и заменете файлове
За да намерим и заменим файлове, трябва да комбинираме командата find с командата sed. За да работите с файлове, използвайте опцията '-exec' с командата find. Помислете за командата по-долу:
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
от горната команда, посоченото събитие ще бъде заменено. Помислете за резултата по-долу:
Намерете текст в множество файлове
Можем да направим друга комбинация от командата find с командата grep, за да намерим текста от различните файлове. Помислете за командата по-долу:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Горната команда ще намери редовете, съдържащи текста „demo“ от всички текстови файлове в директорията „Newdirectory“. Помислете за резултата по-долу:
От горния изход можем да видим, че редовете с текст „demo“ са показани.
Търсене във всяка директория
$ find / -name file1 -type f -print
Горната команда намира всички директории за обикновен файл, чието заглавие е file1 и го отпечатва на екрана. По принцип не е добра идея да търсите файлове по този начин. Може да отнеме доста време. Така че, най-добре е да споменете директорията. Няколко операционни системи могат да монтират файлови системи (динамични), които не са благоприятни за командата find. По-сложните имена на файлове, съдържащи знаци, уникални за обвивката, може да изискват затваряне в единични кавички.