Търся файлове в Linux. Как да търсите файлове в Linux с помощта на командата find Linux намерете всички файлове в директория

Много често трябва спешно да намерите някакъв файл във файловата система, но нямате представа къде се намира. И ако GUI помощните програми за намиране на файл са уморени или изобщо нямате инсталиран GUI или не го използвате по принцип, тогава обширни команди за търсене на файлове, папки и части от файл в Linux ще дойдат до спасяване.

Търсете файл по име в базата данни.
Командата locate може да се използва за търсене на файл(ове) по част от името на файла. Командата сканира базата данни с имена и дава пътя до търсения файл(ове). Препоръчваме да стартирате командата с опцията -i: locate -i за търсене, независимо от главните букви.
пример:

[защитен с имейл]:~$ locate -i .ogg
/home/subsanek/unknown - unknown/01 - unknown 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(съкратено)


-командното извикване намери всички файлове в системата с разширение ogg.
locate търси файлове много бързо, но просто разглежда списък с имена от базата данни и ако файлът е скорошен, има голям шанс да не бъде намерен.
Актуализация на базата данни.
Можете да актуализирате базата данни на командата locate с командата (като root):
updatedb
Четим изход.
Често командата locate може да даде резултат от няколко хиляди, който просто мига пред екрана и не прави нищо за очите ви, за да избегнете това, можете да пренасочите резултата от изхода към контейнера:
locate -i .ogg | по-малко
Можете също да посочите колко резултати да се показват с опцията -n:
locate -i .ogg -n 10
- показва първите 10 резултата.

Търсете файлове с реално сканиране.
Командата find сканира файловата система, за да намери файл, което прави този инструмент бавен, но ефективен.
За да търсите по име, трябва да посочите ключа -name
пример:
find -name filename.txt
По подразбиране намирате търсения рекурсивно в текущата директория.

Търсене на текст по фрагмент от текст.
Легендарната команда grep може да служи за почти всяка цел. Обичам да го използвам не само за намиране на правилните файлове в изходната директория. Можете също да използвате grep за търсене на регулярни изрази.
команден прототип:
grep "шаблон за търсене" file_to_search
пример:
grep -R "текст" /
-command ще търси рекурсивно във всички текстови файлове на системата за думата text.
Grep има впечатляващ брой опции, които може да са ви необходими доста често:

[защитен с имейл]:~$ grep --помощ
Употреба: grep [KEY]... PATTERN [FILE]...
Търсете PATTERN във всеки ФАЙЛ или стандартен вход.
По подразбиране PATTERN е прост регулярен израз (BRE).
Пример: grep -i "здравей свят" menu.h main.c

Избиране на тип регулярен израз и интерпретирането му:
-E, --extended-regexp PATTERN - разширен регулярен израз (ERE)
-F, --fixed-regexp PATTERN - низове с фиксирана дължина разделени
символ за нов ред
-G, --basic-regexp PATTERN - прост регулярен израз (BRE)
-P, --perl-regexp PATTERN - Perl регулярни изрази
-e, --regexp=ШАБЛЕН използвайте ШАБЛОН за търсене
-f, --file=ФАЙЛ взема ШАБЛОН от ФАЙЛ
-i, --ignore-case игнорирайте разликата в главните букви
-w, --word-regexp PATTERN трябва да съответства на всички думи
-x, --line-regexp PATTERN трябва да съответства на целия ред
-z, --null-data низовете са разделени с нулев байт, а не
линия терминатор

Допълнително:
-s, --no-messages потиска съобщенията за грешки
-v, --revert-match изберете несъответстващи редове
-V, --version показва информация за версията и излиза
--help показване на помощ и излизане
--mmap използвайте картографиране на паметта (mmap), когато е възможно

Управление на изхода:
-m, --max-count=NUM спиране след посочени NUM съвпадения
-b, --byte-offset печат отместване в
байтове
-n, --line-number отпечатва номера на реда заедно с изходните редове
--line-buffered flush буфер след всеки ред
-H, --with-filename отпечатайте име на файл за всяко съвпадение
-h, --no-filename не стартира изход от име на файл
--label=ЕТИКЕТ извежда ЕТИКЕТ като име на файл за
стандартен вход
-o, --only-matching показва само частта от низа, която съответства на PATTERN
-q, --quiet, --silent потиска всички нормални изходни данни
--binary-files=ТИП помислете за ТИП на двоичен файл:
двоичен, текстов или без съвпадение.
-a, --text същото като --binary-files=text
-I същото като --binary-files=without-match
-d, --directories=ДЕЙСТВИЕ как да боравим с директории
ACTION може да се чете (чете),
recurse (рекурсивно) или skip (skip).
-D, --devices=ДЕЙСТВИЕ как да боравите с устройства, FIFO и гнезда
ACTION може да бъде "прочетено" или "пропускане"
-R, -r, --recursive същото като --directories=recurse
--include=F_PATTERN обработва само файлове, съответстващи на F_PATTERN
--exclude=F_PATTERN пропускане на файлове и директории,
съответстващ на F_TEMPLATE
--exclude-from=ФАЙЛ пропускане на файлове, съответстващи на шаблон
файлове от FILE
--exclude-dir=PATTERN директории, съответстващи на PATTERN,
ще бъде пропуснат
-L, --files-without-match отпечатват само имена на ФАЙЛОВЕ без съвпадения
-l, --files-with-matches отпечатват само имена на ФАЙЛОВЕ със съвпадения
-c, --count отпечатва само броя на съвпаденията
редове на ФАЙЛ
-T, --initial-tab tab-align (ако е необходимо)
-Z, --null отпечатване на байт 0 след името на ФАЙЛА

Управление на контекста:
-B, --before-context=NUM отпечатва NUM редове от предишния контекст
-A, --after-context=NUM печат на NUM реда от последващ контекст
-C, --context[=NUM] отпечатайте NUM контекстни реда,
--цвят[=КОГА],
--colour[=WHEN] използва маркери за разграничаване на съвпаденията
линии; КОГА може да бъде винаги (винаги),
никога (никога) или автоматично (автоматично)
--color, --colour използват маркери за разграничаване на съвпадащи линии
-U, --binary не премахва CR знаците в края на реда (MSDOS)
-u, --unix-byte-offsets изходно изместване, сякаш няма CR (MSDOS)

Grep -E трябва да се изпълнява вместо egrep. grep -F се приема вместо fgrep.
Изпълнението като egrep или fgrep е най-добре да се избягва.
Когато FILE не е дадено или когато FILE е -, тогава стандартният вход се чете.
Ако са посочени по-малко от два файла, се приема -h. Когато се намери
съвпада, кодът за изход от програмата ще бъде 0 и 1, ако не.
грешки или ако опцията -q не е посочена, кодът за излизане е 2.

Днес ще разгледаме някои от най-популярните начини за намиране на файлове в Linux с помощта на терминала.

1) намерете:За да търсите файлове от командния ред, можете да използвате командата „намери“. Тази команда има следния синтаксис:

действие на критериите за намиране на пътя

пътека - Раздел за определяне на директорията за търсене. Ако нищо не е посочено, търсенето преминава през текущата директория.

"критерии" - Опции за търсене.

действие - Опции, които засягат или контролират състоянието на търсене, като напр

2) намерете:Екип "намерете"това е алтернатива на командата "find -name". Командата find търси файлове в избраната част от файловата система и процесът може да не е много бърз. От друга страна, командата locate търси файлове в специално създадената база данни /var/lib/locatedb за тази цел, което е много по-бързо. За да актуализирате базата данни, използвайте командата updatedb.

3) където е:къде е"връща местоположението на кода (опция -b), man страниците (опция -m) и изходните файлове (опция -s) за посочената команда. Ако не са посочени опции, се показва цялата налична информация. Тази команда е по-бърза от " намирам"но по-малко пълно.

4) което:отбор" който"търси всички пътища, изброени в променливата PATH за посочената команда.

5) тип:

Когато се извиква без опции, показва как ще се тълкуват имената

когато се използва като име на команда. Ако се използва опцията , екип Типдава списък на всички директории, в които има изпълним файл с

съответно име. Списъкът включва също псевдоними и функции,

освен ако не е посочена опция -стр. ДА СЕ

хешът на командата не се препраща, ако опцията е посочена . Екип Типвръща 0,

ако е намерен поне един от аргументите и 1 в противен случай.

охрана

Explo.ru - всичко за туризъм и отдих: горещи обиколки и пътувания до Турция, Египет,

    Намерете файла по името му.Такова просто търсене се извършва с помощта на помощната програма find. Командата по-долу ще търси файл в текущата директория и всички нейни поддиректории.

    find -iname "име на файла"

    • Въведете -iname вместо -name, за да игнорирате малки букви във въведеното име на файл. Командата -name е чувствителна към малки и големи букви.
  1. Започнете да търсите в основната директория.За да започнете търсене в цялата система, добавете модификатора / към заявката. В този случай командата find ще търси файла във всички директории, като се започне от корена.

    намери / -iname "име на файл"

    • Можете да започнете да търсите в определена директория; за да направите това, заменете / с път към директория, например /home/max.
    • Може да се използва. вместо / за да търсите файла само в текущата директория и нейните поддиректории.
  2. Използвайте заместващия знак.* за да намерите файлове, чието име съответства на част от заявката. Можете да използвате заместващия знак *, за да намерите файл, чието пълно име не е известно, или да намерите всички файлове с определено разширение.

    намери /home/max -iname "*.conf"

    • Тази команда ще намери всички .conf файлове в папката Max на потребителя (и нейните подпапки).
    • Използвайте тази команда, за да намерите всички файлове, чиито имена съвпадат с част от заявката. Например, ако вашият компютър има много файлове, свързани с WikiHow, потърсете всички файлове, като напишете "*wiki*" .
  3. Улеснете управлението на резултатите от търсенето.Ако има твърде много резултати от търсенето, е трудно да се намери желания файл сред тях. Използвайте символа | така че резултатите от търсенето да се филтрират от командата less. Това ще улесни прегледа и филтрирането на резултатите от търсенето.

    намери /home/max -iname "*.conf" | по-малко

    Намерете конкретни елементи.Използвайте модификатори, за да покажете само определени елементи в резултатите от търсенето. Можете да търсите обикновени файлове (f), директории (d), символни връзки (l), символни I/O устройства (c) и блокови устройства (b).

    намери / -type f -iname "име на файл"

  4. Филтрирайте резултатите от търсенето по размер на файла.Ако компютърът ви има много файлове с подобни имена, но знаете размера на файла, който търсите, филтрирайте резултатите от търсенето по размер на файла.

    find / -size +50M -iname "filename"

    • Тази команда ще намери всички файлове, по-големи от 50MB. Използвайте модификатора + или -, за да посочите увеличение или намаляване на размера. Ако няма модификатор + или -, командата ще намери файлове, които точно съответстват на посочения размер.
    • Резултатите от търсенето могат да бъдат филтрирани по байтове (c), килобайтове (k), мегабайти (M), гигабайти (G) или блокове от 512 байта (b). Имайте предвид, че горните модификатори са чувствителни към главни букви.
  5. Използвайте логически оператори (булеви оператори), за да комбинирате филтри за търсене.Можете да използвате операторите -and, -или, -not, за да комбинирате различни заявки за търсене в една заявка.

    find /travelphotos -type f -size +200k -not -iname "*2015*"

    • Тази команда ще намери файлове в папката „Travelphotos“, които са по-големи от 200 KB и нямат номер 2015 в имената си.

Случва се да знаете, че файл или директория съществува, но не знаете как да го намерите. Има няколко команди, които да ви помогнат с това: find , locate и which .

4.10.1. команда find

Командата find има следния формат:

Намерете пътя pattern_to_search

Ако не посочите път, find ще започне да търси дадения шаблон в текущата директория и ще продължи през всички поддиректории, които съдържа.

Командата find има много опции, които могат да бъдат намерени в man страницата (напишете man find в командния ред). Най-често използваната опция е -name , която търси всички файлове и директории, съдържащи определена комбинация от букви в името.

намирам. - име tes

Тази команда търси в текущата директория всички файлове, съдържащи "tes" в името.

4.10.2. локализирайте команда

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

Намерете куче

Командата locate използва база данни за намиране на файлове или директории, които съдържат думата куче в имената си. Резултатите от търсенето могат да включват файл, наречен dog, файл, наречен bulldog.txt, директория, наречена /dogs/ и т.н. За да научите повече за командата locate, вижте нейната man страница (напишете man locate в командния ред).

При условие, че базата данни е актуална, командата locate е много бърза при търсене. Базата данни на командата locate се актуализира всяка вечер с помощта на услугата cron.

cron е малка програма, която работи във фонов режим и изпълнява различни задачи (като актуализиране на базата данни на командата locate) на редовни интервали. За достъп до ръководството за cron, въведете man cron в командния ред.

cron периодично актуализира базата данни slocate, която се използва за намиране на файлове или директории. Превключването между операционни системи и изключване на машината в края на деня предотвратява автоматичното актуализиране на базата данни на cron.

За да актуализирате базата данни ръчно, влезте като root (като напишете su - и напишете паролата на root'a в командния ред) и въведете updatedb в командния ред.

След известно време базата данни slocate, използвана от командата locate, ще бъде актуализирана.

Когато приключите работата, за която трябва да сте root, напишете exit в командния ред - ще се върнете към вашата сесия.

Вероятно сте запознати с този проблем: Има файл и не помните къде сте го поставили.

В този случай командата find е удобна. Как се използва? Разбира се, тази помощна програма идва с голяма man страница, но ще разгледаме някои типични случаи. Прегледайте дървото на директориите, като започнете с текущата, и намерете файла lostfile.txt:

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

Броят на разрешените правописни грешки зависи от дължината на името на файла, но може да бъде зададен с опцията -t. За да разрешите максимум 2 грешки и да използвате служебен знак, просто въведете:

Преглед на дървото на директории

Понякога е необходимо да получите общ преглед на дървото на директории. Например, вие сте получили нов CD-ROM и искате да знаете какво има на него. Можете просто да използвате ls-R. Лично аз за четливост предпочитам един от следните методи. Дървото (sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz) показва дърво на директории като диаграма.

Или използвайте добрата стара находка. В Gnu версията на find , която обикновено се доставя с Linux, е възможно да промените изходния формат за показване, например, името на файла и размера:

Можете да използвате малка перл рутина, която работи с командата ls, за да правите подобни неща. Може да се изтегли от тук: lsperl.gz. Има много други помощни програми за сърфиране в дървото на директории, но в повечето случаи те са достатъчни.

Търсене на файлове по съдържание (търсене на текстови низове във файлове).

Стандартните помощни програми за намиране на текстови низове във файлове са grep / egrep за търсене на нормални изрази и fgrep за търсене на литерални низове. За да търсите израз във всички файлове в текущата директория, просто въведете:

Ако ви е трудно да запомните тези дълги команди, използвайте малък скрипт, който може да бъде изтеглен от тук: grepfind.gz . Скриптът също така премахва символи, които не могат да се отпечатват от низа за търсене, така че да не получите случайно двоичен файл в резултат на търсенето на egrep.

Много интересна програма за търсене е agrep. Agrep работи основно като egrep, но ви позволява да търсите въз основа на правописни грешки. За да търсите израз и да разрешите максимум 2 правописни грешки, въведете:

След това можете да търсите низ във всички файлове, които преди това са били индексирани

поглед -i -2 "израз за търсене"

glimpse също позволява правописни грешки (както и agrep), а -2 показва, че са разрешени две грешки. поглед е наличен на