Как да използвате Find Command в Linux? 40 включени примери

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


Освен локализирането на файлове и директории, комбинирането на командата find с други ви дава възможност да предприемете действия по резултатите. Добавянето на опцията -exec позволява на sysadmins да изпълнява външни команди и да изпълнява действия като копиране, преместване, изтриване или промяна на разрешения на файловете, отговарящи на зададените критерии, като размер, име и т.н..

В тази статия ще започнем с обяснението на основните команди за намиране с примери. Това ще ви покаже как да намерите файлове и директории. След това ще ви покажем как да използвате опцията -exec за действие върху файловете или директории въз основа на техния размер, разрешения и т.н..

Общият синтаксис за командата find е

намерете {path} {name -of-file или dir-to-search} {действие за предприемане}

Където,

  • път определя директорията.
  • име на файл или dir-to-search: Име на файла или директория, които да търсите
  • действие за предприемане: например копиране, изтриване, преместване и т.н..

В този урок ще ви обясним как да намерите файлове и директории, съответстващи на определени модели. Ще видим и как да изпълняваме действия върху файловете или директории, които командата find намира. Ръководството е базирано на Ubuntu, но е приложимо за повечето Linux дистрибуции и версии.

Contents

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

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

За да потърсите конкретен файл, изпълнете следната команда от root (/). Командата съдържа точното име на файла, който търсите.

намирам . -име на файла22.txt

продукция

./test/file22.txt
./sales/file22.txt

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

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

намери ./test -name file22.txt

Търсите конкретни файлове в друга директория

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

намери ./test -name файл *

продукция

./test/file22.txt
./test/file30.doc
./test/file1.txt
./ Тест / file5, док

Търсете файлове по разширение

За да търсите файлове с определено разширение, добавете го към командата.

намирам . -име * .txt

продукция

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

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

Използвайте командата по-долу, за да търсите файлове и директории, започващи с букви qa. В нашия компютър имаме файловете qatree.txt и qa.txt, както и директория с името qa.

Ако изпълним командата;

намери ./ -име "QA *"

Той връща следния изход

./test/qatree.pdf
./test/qa.txt
./ Начало / QA

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

Намерете само файлове или директории

Само за файлове използвайте превключвателя тип f.

Само файлове

намери ./ -тип f -name "QA *"

продукция

./test/qatree.pdf
./test/qa.txt

Само директории

Добавете опцията тип d, за да намерите само директории.

намери ./ -тип d -name "QA *"

продукция

./ Начало / QA

Случай безчувствена команда за намиране

Всички търсения с превключвател-име са чувствителни към малки и няма да дават резултати с главни букви. За да получите всички случаи, използвайте опцията -iname.

намери ./ -инам "QA *"

продукция

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./ Начало / QA

Търсете файл от множество директории

За да намерите файловете в различни директории, добавете техните пътища в командата. В нашия случай ще проверим в тестовите и цифровите директории.

намери ./test ./numeric -name file22.txt -тип f

продукция

./test/file22.txt
/root/numeric/file22.txt

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

Можете да използвате командата find, за да намерите множество файлове, които споделят различните разширения като * .doc, * .txt * .pdf и т.н. желаните разширения.

намирам . -тип f (-име "*.текст" -o-име "* .pdf" -o-име "* .doc" )

продукция

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Намерете файлове, съдържащи определен текст

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

За да търсите всички файлове, съдържащи думата хиперконвергенция “, използвайте;

намери / -тип f -exec grep -l -i "hyperconvergence" {};

продукция

/ Корен / цифрово / HCl
/ Корен / HCIP

Опцията –i дава възможност на командата да игнорира случаите и ще намери текста независимо дали с главни букви или не, т.е. хиперконвергенция, хиперконвергенция и т.н..

За да търсите файловете в определена директория, просто го добавете към командата

намерете ./numeric -type f -exec grep -l -i "hyperconvergence" {};

продукция

./ Цифрово / HCl

Намерете файлове и директории въз основа на размера

Можете да намерите всички файлове или директории, които са по-малки, равни или по-големи от определен размер, в определен диапазон или празни. Използвайте подходящия формат за размер в зависимост от типа файлове или директории, които търсите.

Опциите за размер включват;

в – байтове

k – килобайти

М – Мегабайти

G – гигабайти

Намерете файлове с определен размер – равен на 30MB

За търсене намерете всички 30MB файлове

намерете / -размер 30M

Намерете файлове, по-големи от определен размер

намери -размер + 2M

продукция

. /Downloads/ubuntu18043.iso
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Намерете файлове под 10 MB в текущата директория

намирам . -тип f -размер -10M

Намерете файлове с размери между 100-200MB

Когато търсите файлове в определен диапазон, като например между 100 и 200 MB

намери / -размер + 100M -размер -200M

Потърсете директории по-големи от 20 kb

намери / тип d -размер + 20k

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

файлове

намери ./ -тип f -размер 0

или

намери ./ -тип f –празен

Directories

намерете ./ -тип d – празен

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

Намерете файлове, по-стари от n дни

find / path / -type f -name ‘* .txt’ -mtime +8

-Mtime +8 ще търси txt файлове, които са по-стари от 8 дни.

По дата на промяна

Това ще търси файлове, променени през последните 17 часа

намирам . -mtime -17 -тип f

Търси промените в директории през последните 10 дни

намирам . -mtime -10 -тип d

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

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

За да видите в началната директория файлове, които не са достъпни през последните 10 дни.

намери / начало-време +10

Достъп до файлове преди точно 10 дни

намери / начало -време 10

Достъп до последните 10 дни

намиране / начало -време -10

Намерете файлове, променени в последните n дни

Можете също така да търсите файловете в директорията / home, променени през последните 10 дни, като използвате командата;

намиране / начало -време -10

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

Например всички файлове, променени преди 6 и 15 дни в началната директория.

намери / начало -тип f -mtime +6 -mtime -15

Достъп до файлове и директории през последните 10 минути

За да намерите файловете, до които имате достъп през последните 10 минути, използвайте опцията -amin.

намирам . -amin -10 -тип f

продукция

./.bash_history
./[Имейл защитен]: ~ #

Достъпа до директории през последните 10 минути

намирам . -амин -10-тип d

Намерете файлове, съвпадащи с конкретни разрешения

Синтаксис

$ find -perm режим

Където режим е разрешението, което е или числово като 644, 655, 700, 777 и т.н., или букви като u = x, a = r + x и т.н..

Можете да зададете режима по следните три различни начина.

  1. Без префикс, когато искате да намерите файлове с посочените точни разрешения.
  2. С „-“ за файлове с поне посоченото разрешение. Това връща файлове с посочените, както и допълнителни по-високи разрешения.
  3. Използването на „/“ изисква посочване на собственика или групата с разрешение за файла.

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

намери -perm 777

продукция

./ ФАЙЛ_1

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

продукция

./ ФАЙЛ_2
./ ФАЙЛ_1

Командата търси всички файлове, в които

  • Собственикът на файла е чел / записва / изпълнява разрешения.
  • Групата има разрешения за четене / запис
  • Други имат разрешение за четене / писане

Като такъв той връща два файла, които отговарят на този критерий – file1 и file2. Не е необходимо файловете да имат точните разрешения 766 и могат да имат допълнителни, толкова дълги, но трябва да имат поне посочените.

Намерете файлове за писане от собственика

Сега ще използваме „/“, за да търсим файлове, които могат да се запишат от собственика им, от групата или от други.

намери -perm / 222
.
./ ФАЙЛ_2
./ file3
./ ФАЙЛ_1

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

намери -perm -220

продукция

./ ФАЙЛ_2
./ ФАЙЛ_1

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

Намерете всички файлове, притежавани от Джак

намиране / начало -потребител

продукция

/ Начало / жак
/home/jack/examples.desktop
/home/jack/.gnupg
/home/jack/.gnupg/private-keys-v1.d
/home/jack/ans.cgi

Намерете конкретни файлове, собственост на потребител

Намерете всички текстови файлове, собственост на Джак

намери / home -usek жак -iname "*.текст"

продукция

/home/jack/docs/file32.txt

Намерете и избройте файлове и директории заедно с техните разрешения

find -name "* .conf" | л-л

продукция

общо 120
drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
drwxr-xr-x 2 root root 4096 4 януари 11:57 Desktop
drwxr-xr-x 2 корен на корен 4096 Дек 31 11:50 Документи
drwxr-xr-x 2 root root 4096 Дек 31 12:27 Изтегляния
-rw-r – r– 1 корен на корена 0 4 януари 12:02 файл22.doc
drwxr-xr-x 2 корен корен 4096 януари 4 12:14 файл23
-rw-r – r– 1 root root 0 4 януари 12:23 file23.txt

Намерете и действайте върху резултатите

В този раздел ще разгледаме как можете да действате върху файловете, които съответстват на модела, посочен в командата find.

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

Намерете и променете разрешенията за определени типове файлове. В нашия случай ще работим с PHP файлове с различни разрешения, както е показано по-долу.

[Имейл защитен]: ~ / ver $ ls -la

общо 8
drwxrwxr-x 2 жак жак 4096 3 януари 14:11 .
drwxr-xr-x 8 жак жак 4096 3 януари 14:05 ..
-rwxr-xr-x 1 жак жак 0 3 януари 14:06 ans.php
-rw-rw-r– 1 жак жак 0 3 януари 14:11 base.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:06 query.php
-rw-rw-r– 1 жак жак 0 3 януари 14:11 qust.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:06 text.php
-rw-rw-r– 1 жак жак 0 3 януари 14:11 vari.php

Сега ще потърсим всички PHP файлове (по-горе) и ще заменим техните разрешения със 755

намери ver -name "* .php" -тип f -exec chmod 755 {};

Командата търси PHP файлове в версията директория и след това задава разрешението им на 755 (rwxr-xr-x)

Резултати

[Имейл защитен]: ~ / ver $ ls -la
общо 8
drwxrwxr-x 2 жак жак 4096 3 януари 14:11 .
drwxr-xr-x 8 жак жак 4096 3 януари 14:05 ..
-rwxr-xr-x 1 жак жак 0 3 януари 14:06 ans.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:11 base.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:06 query.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:11 qust.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:06 text.php
-rwxr-xr-x 1 жак жак 0 3 януари 14:11 vari.php

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

Намерете файлове с 644 разрешения и ги променете, за да имат 655 разрешения

намирам . -тип f -perm 644 -exec chmod 655 {};

Можете също така да потърсите директории с 644 разрешения и да ги замените със 755.

намирам . -тип d -perm 644

продукция

./ документи

Папката с документи има 644 разрешения

drwxrwxr-x 2 жак жак 4096 януари 3 12:45 док

За да го зададем на 755, стартираме

намирам . -тип d -perm 644 -exec chmod 755 {};

Сега можем да проверим отново, за да видим какво точно 755

намирам . -тип d -перма 755

продукция
.
./ документи

Отгоре можем да видим коренните и директорийни документи с разрешенията 755.

Командата Ls –la дава следните подробности

drwxr-xr-x 2 жак жак 4096 януари 3 12:45 док

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

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

Командата по-долу ще намери файла file22.txt и ще го копира в директорията ~ / tmp / images.

намери -iname file22.txt -exec cp {} ~ / tmp / images;

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

За да намерите файлове като изображения с разширение jpg в текущата директория и да ги копирате на различно място като папка с изображения, използвайте;

намери -iname ‘* .jpg’ -exec cp {} ~ / tmp / images;

Това ще намери и копира всички jpg файлове в папката ~ / tmp / images.

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

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

намери ~ / tmp / dir1 / ~ / tmp / dir2 / $ HOME / 3 / -maxdepth 0 -exec cp ~ / numeric / hci {};

Това ще намери файла hci и ще го копира в трите директории на / tmp / dir1 / / tmp / dir2 / и $ HOME / 3 /

Намерете и преместете файлове в друга директория

За да преместите известен файл от директория в друг. За да преместите Universal.php файла;

намери ~ / папка / -тип f -name Universal.php -exec mv {} ~ / числово /;

Търсете и премествайте файлове с определено разширение в друга папка

намери ~ / numeric / -type f -name ‘* .php’ -exec mv {} ~ / папка /;

Намерете определени файлове и се преместете в определена различна папка

find -type f -name uni *. * -exec mv {} ~ / unifiles /;

Командата търси всички файлове с имена, започващи с uni и имащи разширение. След това ги премества в директорията / unifiles /

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

Намерете и преместете файлове, по-стари от посочените дни, на друго място, като архива.

find / path / -type f -name ‘* .pdf’ -mtime +20 -exec mv {} / backup1 /;

Това ще търси pdf файлове по-стари от 20 дни и ще ги премести в директорията backup1.

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

Синтаксисът за намиране и премахване на файлове или директории в текущата директория е

намирам . -тип f-име "файл за изтриване" -exec rm -f {}; да изтриете само файлове или

намирам . -тип d-име "реж до изтриване" -exec rm -rf {}; да изтривате само директории

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

За да намерите и изтриете файлове, започващи с til, използвайте;

намирам . -тип f-име "Тил *" -exec rm {};

За да намерите и изтриете директории, започващи с til

намирам . -тип d-име "Тил *" -exec rm {};

Премахнете както файловете, така и директории

намирам . -name "Тил *" -exec rm -rf {};

Това ще премахне както файловете, така и директории, започвайки с буквите.

Изтриване чрез разширение

По-долу е как можете да намерите и изтриете всички txt файлове в текущата директория. Заменете txt с друго разширение като bak, pdf или друго, което искате да премахнете.

намирам . -тип f-име "*.текст" -exec rm -f {};

В случай, че искате системата да ви подкани да потвърдите, преди да изтриете всеки файл, добавете опцията -i както е по-долу.

намирам . -тип f-име "*.текст" -exec rm -i {};

продукция

rm: премахване на обикновен празен файл ‘./File22.txt’? ш
rm: премахване на обикновен празен файл ‘./file22.txt’? ш
rm: премахване на обикновен празен файл ‘./file23.txt’?

По подразбиране, -rm няма да премахва директории и трябва да използвате опцията –r, за да гарантирате рекурсивно премахване. Това гарантира изтриването на празни директории и такива, съдържащи файлове. Опцията -f принуждава премахването и се използва както за файловете, така и за директории.

Намерете и изтрийте файлове, по-стари от n дни

Намерете и изтрийте архивни файлове, по-стари от 20 дни от текущата директория.

намирам . -тип f -name ‘* .bak’ -mtime +20 -exec rm {};

Това ще изтрие всички .bak файлове, по-стари от 20 дни.

Намерете и изтрийте само директории

За да изтриете директория, наречена dir22

намирам . -тип d-име dir22 -exec rm -rf {};

Уверете се, че съвпадате с името на директорията или използвате опцията -iname.

намирам . -тип d -инам Dir22 -exec rm -rf {};

Премахва и Dir22, и dir22

За да потвърдите преди изтриването, използвайте опцията -i.

намирам . -тип d -инам Dir22 -exec rm -rf -i {};

продукция
rm: премахване на директория „./Dir22“? н
rm: премахване на директория „./dir22“? ш

В нашия случай ние написахме n за директория Dir22, която няма да бъде изтрита, и y за dir22, която сега ще бъде премахната.

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

Можете да използвате някоя от следните команди, за да намерите празни файлове и да ги изтриете автоматично.

намери ./ -тип f -размер 0 -exec rm -f {};

или
намери ./ -тип f -размер 0 | xargs rm -f
или
намерете ./ -тип f -размер 0 –изтриване

Намерете и премахнете празни директории

За да премахнем празните директории, ще използваме опцията d.

намери ./ -тип d -empty -exec rmdir {};

Друга алтернатива е да използвате delete вместо премахване.

намери ./ -тип d -empty -delete

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

За да избегнете случайни изтривания, най-добрата практика е да използвате потребителски акаунт, който не е root. Освен това се уверете, че изтривате правилните файлове, които не са полезни, и че имате резервно копие на всичките си файлове с данни, за всеки случай.

Какво следва?

Продължете напред и ги изпробвайте в лабораторията си или в NON PRODUCTION среда. Вижте дали можете да използвате някои за автоматизиране на почистването на файловата система с Crontab. И, за да овладеете Linux, проверете това онлайн курс.

ЕТИКЕТИ:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map