logo

Намерете команда в Linux/Unix с примери

Командата 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

Предикати

Широко използвани първични са:

    - модел на име:Той проверява дали името на файла е същото като дадения shell-glob шаблон или не.- тип тип:Той проверява дали файлът е предоставен тип.- печат:Винаги дава истинската стойност. Той отпечатва текущото име на файл и нов ред в stdout.-print0:Винаги дава истинската стойност. Той отпечатва текущото име на файл и нулев знак в stdout. Не се изисква от POSIX.-exec програма [аргумент ...];:Винаги дава истинската стойност. Той изпълнява програма с фиксираните дадени аргументи и текущия път на файла.-exec програма [аргумент ...] {} +:Винаги дава истинската стойност. Той изпълнява програма с фиксирани дадени аргументи и възможно най-много пътища. За почти всяка реализация други срещания на {} означават допълнителни копия на даденото име (аспект, който не е необходим на POSIX).-ok програма [аргумент ...];:Това е същото като -exec, но ще върне false или true, ако програмата даде 0.

Намерете по подразбиране прилагането на -print в случай, че условията са верни, ако изразът не използва нито едно от -ok, -exec, -print или -print0.

python rstrip

Оператори

Операторите подобряват командните изрази за намиране. Те са споменати в низходящ ред:

    ( израз ):Този оператор може да принуди приоритет.! израз:Ако изразът върне false, той връща true.
  • expr1 expr2 (или expr1 -a expr2 : И. expr2 не се оценява, ако expr1 е невярно.
  • expr1 -o expr2 : ИЛИ. expr2 не се оценява, ако expr1 е вярно.

Примери за командата find

Нека видим следните примери за командата find:

Намерете файлове по име

Можем да търсим във всички файлове, завършващи с разширение „.txt“. За да направите това, изпълнете командата по-долу:

 find . -name '*.txt' 

Горната команда ще изведе всички текстови файлове от текущата работна директория. Помислете за резултата по-долу:

Linux Find

От горния резултат всички файлове с разширение „.txt“ са изброени с командата find.

Намиране на файлове по тип

Параметърът '-type' се използва за указване на типа на файла.

Някои от типовете файлове са както следва:

  • f: обикновен файл
  • d: директория
  • l: символни връзки
  • c: символни устройства
  • b: блокови устройства

Помислете за командата по-долу:

 find . -type d -name '*.bak' 

Горната команда ще изброи всички директории с разширение „.bak“. Помислете за резултата по-долу:

Linux Find

От горния изход, командата 'find . -type d -name '*.bak' показва всички директории, завършващи с '.bak'.

Намерете по-нови файлове

Параметърът '-newer' помага при търсене на файлове, които са по-нови от споменатия файл. Помислете за командата по-долу:

 find . -newer msg.txt 

Горната команда ще покаже всички файлове, които са по-нови от „msg.txt“ от текущата работна директория. Помислете за резултата по-долу:

Linux Find

От горния резултат всички показани файлове са по-нови от файла „msg.txt“.

Изтегляне на видеоклипове от youtube vlc

Намерете и изтрийте файл

Опцията '-delete' се използва за изтриване на определен файл. Трябва да сме много внимателни, докато използваме тази команда, защото няма опция за отмяна, ако веднъж бъде изпълнена. Помислете за командата по-долу:

 find . -name Demo.txt -delete 

Горната команда ще изтрие файла „Demo.txt“ от текущата работна директория. Помислете за резултата по-долу:

Linux Find

Намерете директория

Опцията 'type -d' се използва за намиране на директория. Помислете за командата по-долу:

 find . type -depth -name Newdirectory 

Горната команда ще намери местоположението „Нова директория“. Помислете за резултата по-долу:

Linux Find

Намерете файлове по време на модификация

Опцията '-mtime', последвана от броя на дните, се използва за намиране на файловете по модификация. Броят на дните може да бъде положителен или отрицателен. Отрицателната стойност ще се използва за по-малко, както -1 се използва за последния ден и по подобен начин +1 ще намери файла за преди повече от един ден. Помислете за командата по-долу:

 find ./Newdirectory -mtime -1 

Горната команда ще намери файловете, които са били променени през последния ден. Помислете за резултата по-долу:

Linux Find

Намерете файлове с разрешение

Опцията '-perm' се използва за намиране на файлове с разрешение. Изпълнете командата find с опцията '-perm' и предайте необходимата стойност. Помислете за командата по-долу:

 find ./ -perm 777 

Горната команда ще изброи файловете от посочената директория, които всеки може да чете, пише и изпълнява.

Намерете и заменете файлове

За да намерим и заменим файлове, трябва да комбинираме командата find с командата sed. За да работите с файлове, използвайте опцията '-exec' с командата find. Помислете за командата по-долу:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

от горната команда, посоченото събитие ще бъде заменено. Помислете за резултата по-долу:

Linux Find

Намерете текст в множество файлове

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

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Горната команда ще намери редовете, съдържащи текста „demo“ от всички текстови файлове в директорията „Newdirectory“. Помислете за резултата по-долу:

Linux Find

От горния изход можем да видим, че редовете с текст „demo“ са показани.

Търсене във всяка директория

 $ find / -name file1 -type f -print 

Горната команда намира всички директории за обикновен файл, чието заглавие е file1 и го отпечатва на екрана. По принцип не е добра идея да търсите файлове по този начин. Може да отнеме доста време. Така че, най-добре е да споменете директорията. Няколко операционни системи могат да монтират файлови системи (динамични), които не са благоприятни за командата find. По-сложните имена на файлове, съдържащи знаци, уникални за обвивката, може да изискват затваряне в единични кавички.