მოძებნეთ Linux-ში find-ით. Find and Locate-ის გამოყენებით ლინუქსის სერვერზე ფაილების საპოვნელად Linux იპოვნეთ ფაილები, რომლებიც არ შეიცავს

გამარჯობა მთელ ჰაბრის საზოგადოებას.
ეს ჩემი პირველი პოსტია და იმედია ბოლო არა. ამიტომ, ყველანაირი ხარვეზი, ხარვეზები და ტექსტის გარკვეული წყლიანობა გარდაუვალია, ამიტომ მკაცრად ნუ განსჯით :)
ამ პოსტის დაწერა მომეთხოვა თემა "კონსოლი დამწყებთათვის". , სადაც ISVir-მა წამოაყენა მწვავე, ჩემი აზრით, თემა - როგორ ვუთხრათ ახალბედებს კონსოლის შესახებ ხელმისაწვდომ ენაზე მათი წარმოსახვითი სუპერ სირთულის შეშინების გარეშე.

მე არ ვაპირებ ISVir-ის პარიტეტის მიღებას, უბრალოდ გეტყვით რამდენიმე ყველაზე ძირითადი კომუნალური პროგრამის პრაქტიკულ გამოყენებაზე "ყოველდღისთვის", რომლის გარეშეც კონსოლში მუშაობა ჩემთვის შეუძლებელია.

ასე რომ, რაც გვაქვს:

იპოვე- მოძებნეთ ფაილები. საშუალებას გაძლევთ მოძებნოთ ფაილები, დირექტორიები, სიმლინკები და სხვა ფაილური ობიექტები. find გაძლევთ საშუალებას მიუთითოთ ძიების მრავალი ვარიანტი, როგორიცაა:

  • ძიება ნიღბის მიხედვით (სახელით)
  • ძიების ბუდეების სიღრმის კონტროლი
  • მოძებნეთ კონკრეტული ფაილის ტიპები (დირექტორია, სიმლინკები, სოკეტები)
  • ძებნა ფაილის შექმნის/მოდიფიკაციის დროის მიხედვით
  • შეგიძლიათ დააყენოთ ფაილის ზომა (დან და დიაპაზონში).
  • მოქმედებების შესრულება თითოეულ ნაპოვნი ფაილთან
საძიებო მანაში შეგიძლიათ წაიკითხოთ დანარჩენი ვარიანტებისა და პარამეტრების შესახებ.

ასე რომ, დაუყოვნებლივ - მოძებნეთ ყველა ფაილი / etc / დირექტორიაში, რომლებიც შეიცვალა ბოლო 24 საათის განმავლობაში:

$ find / etc / -type f -mtime -1

გავაანალიზოთ რაც დავწერეთ:

პირველი პარამეტრი ყოველთვის არის ძიების საწყისი დირექტორია.
ვარიანტი -ტიპიპარამეტრით ლაპარაკობს იპოვერომ საჭიროა მხოლოდ ჩვეულებრივი ფაილების ძებნა.
ვარიანტი -მჯერპარამეტრით -1 მიუთითებს იპოვერომ თქვენ უნდა იპოვოთ ფაილები, რომლებიც შეიცვალა ბოლო 24 საათის განმავლობაში.
"-" წინა 1 ადგენს დიაპაზონის ზედა ზღვარს, ე.ი. "ყველაფერი, რაც შეიცვალა ბოლო 24 საათის განმავლობაში"

თუ მივუთითეთ "+" წინა 1 , მაშინ იპოვეიპოვის ყველა ფაილს, რომელიც შეიცვალა 01/01/1970-დან გუშინდელამდე (ერთზე მეტი დღის წინ)
თქვენ ასევე შეგიძლიათ მიუთითოთ ზუსტი თარიღი მოდიფიკატორის გარეშე ნომრის დაყენებით.

მოქმედებების შესრულება ნაპოვნი ფაილებით.
ვარიანტი - აღმასრულებელიიღებს ხაზს ბრძანებით, რომელიც შესრულდება თითოეული ნაპოვნი ფაილისთვის
ბრძანებაზე გადაცემული პარამეტრი აღინიშნება {}
ხაზი უნდა დასრულდეს "\;"-ით.

განვიხილოთ მაგალითი:
* იპოვნეთ / tmp დირექტორიაში ყველა ფაილი, რომელიც შეიცვალა ბოლო თვეში და დააკოპირეთ ისინი დირექტორიაში
/ tmp / სარეზერვო /

$ find / tmp -ტიპი f -mtime -30 -exec cp () / tmp / სარეზერვო \;

* წაშალეთ ყველა დირექტორია (რეკურსიულად) დასახელებული ჟურნალი, რომელიც შეიცვალა დირექტორიაში ბოლო დღეს
/ var / www
$ find / var / www -type d -mtime 0 -name logs -exec sudo rm -fr () \;

პარამეტრი ვარიანტში -ტიპიმიუთითებს მხოლოდ დირექტორიების ძიებაზე
ვარიანტი -სახელიგანსაზღვრავს ძიებას სახელით.
აქ უნდა დავამატო, რომ არ არის ოპტიმალური ფაილების ამ გზით წაშლა (ნელა).
find-ს აქვს ჩაშენებული წაშლის ვარიანტი, რაც სიდიდის ბრძანებით უფრო სწრაფია.

განიხილეთ სასარგებლო ავკ.
ავკარის პროგრამირების ენა ფაილების დასამუშავებლად. მისი მიზანი
განვითარება - ხელი შეუწყოს ტექსტური ინფორმაციის დამუშავებასთან დაკავშირებული მრავალი პრობლემის ჩამოყალიბებასა და გადაწყვეტას. Სინამდვილეში, ავკარის უტილიტა, რომელიც ხელმისაწვდომია კონსოლიდან.
გასაგები მიზეზების გამო აქ awk კოდის დაწერის ტექნიკას არ განვიხილავ - მხოლოდ ჩვენთვის მნიშვნელოვან ერთ ტექნიკაზე გეტყვით.

პირველი, awk-ს შეუძლია მონაცემების მიღება STDIN-დან: $ echo "ტესტი" | awk ...
მეორეც, awk ეფექტურია კონსოლში ერთი ხაზის ჩაწერისას, რადგან ახორციელებს მას პარამეტრად მიცემულ კოდს:


awk ყოფს შეყვანის ნაკადს ველებად და აყენებს ამ ველებს ცვლადებში, როგორიცაა $ 1, $ 2, .. $ N
ნაგულისხმევად, ველის გამყოფი არის სივრცე, მაგრამ ოფციით -F "_გამყოფი_"ამის გადალახვა შეიძლება:
$ head -4 / etc / passwd
root: x: 0: 0: root: / root: / bin / bash
დემონი: x: 1: 1: დემონი: / usr / sbin: / bin / sh
bin: x: 2: 2: bin: / bin: / bin / შ
sys: x: 3: 3: sys: / dev: / bin / sh

$ cat / etc / passwd | awk -F ":" "(დაბეჭდვა $ 1)"
ფესვი
დემონი
ურნა

მაგალითად, ჩვენ გვაქვს რამდენიმე საიტი / var / www დირექტორიაში. თითოეული საიტისთვის არის logs დირექტორია, სადაც იწერება Apache-ს ლოგები (ამ საიტისთვის) და ახლა გვინდა გავარკვიოთ ამ ჟურნალების მთლიანი მოცულობა, ასევე ვიპოვოთ ყველა ჟურნალი 100 მბ-ზე მეტი.

1.მოძებნეთ დიდი მორები:

$ find / var / www -type f -name "access.log *" -size + 100M
/var/www/site1/logs/access.log
/var/www/site2/logs/access.log.1.gz

2. გამოვთვალოთ ჟურნალების მთლიანი მოცულობა:

იპოვეთ / var / www / -type f -name "access.log *" -exec du -k () \; | awk "(s + = $ 1) END (print s)"
5071604


ასე რომ, ნუ გეშინია - ახლავე აგიხსნი ყველაფერს :)

იპოვეთ ყველა ფაილის ძიება ნიღბით (access.log *) და აწარმოებს ბრძანებას თითოეულისთვის დუ.
გუნდი დუბეჭდავს ფაილის ზომას. ვარიანტი -კგამომავალს აკეთებს კილობაიტებში.
შემდეგ პროცესორი ჩაირთვება ავკ, უბრალოდ აჯამებს სტრიქონების (ნომრების) პირველ ველს ცვლადში და ბეჭდავს ცვლადის მნიშვნელობას ეკრანზე.

კიდევ ერთი მაგალითი: იპოვეთ სისტემაში მომხმარებლის კუთვნილი ყველა ფაილი და დირექტორია ტესტი 1და გამოთვალეთ მთლიანი მოცულობა.

#find / -user test1 -exec du -sm () \; | awk "(s + = $ 1) END (ბეჭდვა s)"

იმათ. აქ ვარიანტით - მომხმარებელიიპოვნეთ ეძებს ფაილებს, რომლებიც მიეკუთვნება მომხმარებლის test1-ს და თითოეული ფაილის/ქალაქისთვის გამოთვალეთ მისი ზომა (du ბრძანება)
შემდეგ awk იღებს ამ მონაცემებს მილსადენის მეშვეობით და, როგორც ზემოთ გავაკეთეთ, ითვლის მათ ჯამს Kb-ში.

ᲙᲐᲠᲒᲘ. ვფიქრობ, დღეისთვის ეს საკმარისია.
პოსტი საკმაოდ დიდი გამოვიდა, როგორც ჩანს ჩვევის გამო :)

მაშინვე მინდა ვთქვა, რომ მე არ დამისახავს მიზანს უბრალოდ მოგიყვეთ find-ისა და awk-ის გამოყენების შესახებ, არამედ რეალურ სიტუაციებში პრაქტიკული გამოყენების მაგალითების მოყვანა.
თუ მოგეწონებათ სტატია, გავაგრძელებ ამ მიმართულებით წერას.

გმადლობთ დროისთვის.

Linux-ს აქვს ძალიან ძლიერი და სასარგებლო ბრძანება ფაილების მოსაძებნად - ბრძანება იპოვე... მას უამრავი შესაძლებლობა აქვს ფაილების მოსაძებნად, თუმცა ზოგჯერ დამწყებთათვის სირთულეებს უქმნის, ძირითადად მისი სინტაქსის გამო.

Find ბრძანების გამოყენების მარტივი მაგალითი

პირველ რიგში, მოდით შევხედოთ Find ბრძანების გამოყენების მარტივ მაგალითს თქვენს კომპიუტერში კონფიგურაციის ფაილების საპოვნელად. ჩვენ მოვძებნით კონფიგურაციის ფაილებს root დირექტორიადან /. ამისათვის თქვენ უნდა გაუშვათ ბრძანება root-ის სახით, რომ გქონდეთ საკმარისი ნებართვები, წინააღმდეგ შემთხვევაში მიიღებთ შეტყობინებებს "ნებართვა უარყო". მაშ ასე, გაუშვით ბრძანება:

იპოვნეთ / -name config -print

ბრძანება ნიშნავს ამას: მოძებნეთ ფაილები სახელად config (-name config) დაწყებული დირექტორიადან / (fin ბრძანების პირველი პარამეტრი) და დაბეჭდეთ ფაილის სახელები ეკრანზე (-print არგუმენტი). გაითვალისწინეთ, რომ ძიება რეკურსიულია, ანუ ძიებისას ყველა ჩადგმული დირექტორია იძებნება. როგორც ხედავთ, ყველაფერი მარტივია. ახლა მოდით გადავხედოთ ბრძანების სინტაქსს და გადავიდეთ მისი ძირითადი არგუმენტების მიმოხილვაზე.

იპოვნეთ ბრძანების სინტაქსი

პოვნის ბრძანების ზოგადი სინტაქსი, რომელიც შეგიძლიათ იპოვოთ საცნობარო სახელმძღვანელოში, შეიძლება ცოტა რთულად მოგეჩვენოთ, ამიტომ მე შემოგთავაზებთ უფრო წასაკითხად:

იპოვნეთ [გზა] [ოფციები] [ძებნის კრიტერიუმები] [მოქმედებები ფაილებზე]

ბილიკი

თქვენ შეგიძლიათ გამოიყენოთ როგორც აბსოლუტური, ასევე ფარდობითი ბილიკები, როგორც საძიებო გზა, ასევე სივრცით გამოყოფილი ბილიკების სია.

Პარამეტრები

Find ბრძანების პარამეტრები მითითებულია დაწყებული "-"-ით, რასაც მოჰყვება ვარიანტის სახელი. მოდით შევხედოთ მთავარ ვარიანტებს.

Ძებნის კრიტერიუმები

Find ბრძანებას შეიძლება ჰქონდეს მრავალი საძიებო კრიტერიუმი (ასევე უწოდებენ ტესტებს). თითოეული კრიტერიუმი წარმოადგენს სპეციფიკურ ტესტის პირობას, რომელიც აბრუნებს ჭეშმარიტს ან მცდარს. ეს შეიძლება შევადაროთ if განაცხადის პირობებს პროგრამირებაში. შემდეგი ფაილის დამუშავების პროცესში find ბრძანება რიგრიგობით ამოწმებს თითოეულ კრიტერიუმს და თუ შემდეგი კრიტერიუმი დააბრუნებს false, მაშინ find ბრძანება გადადის შემდეგ ფაილზე. Find ბრძანებას საკმაოდ ბევრი კრიტერიუმი აქვს, ჩვენ მხოლოდ რამდენიმე მათგანს განვიხილავთ.

-ატიმე ნფაილზე ბოლოს წვდომა იქნა N დღის წინ.
- დრო ნფაილი ბოლოს შეიცვალა N დღის წინ.
- სახელის ნიმუშიფაილის სახელი (სახელის ნიმუში) ბილიკის გარეშე. რეკომენდირებულია, რომ ნიმუში ყოველთვის ჩასვათ ბრჭყალებში.
-უფრო ახალი სხვა_ფაილიფაილი შეიცვალა მოგვიანებით, ვიდრე other_file.
- ზომა [±] Nფაილის ზომა არის N ბლოკი, თუ მითითებულია + N, მაშინ ფაილის ზომა N-ზე მეტია, -N უფრო მცირეა. სიმბოლო N-ის შემდეგ აღნიშნავს ბლოკის ზომას. b - 512 ბაიტი, c - ბაიტი, w - 2 ბაიტი, k - კილობაიტი, M - მეგაბაიტი, G - გიგაბაიტი.
- ტიპი Cჩაწერეთ C ფაილი. C–სთვის ყველაზე ხშირად გამოყენებული მნიშვნელობებია d დირექტორიაში, f ფაილისთვის.
- მომხმარებლის სახელიფაილი ეკუთვნის მომხმარებლის სახელად UserName.

Find ბრძანების გამოყენების მაგალითები კრიტერიუმების გამოყენებით

იპოვეთ რეგულარული ფაილები (არა დირექტორიები) მიმდინარე დირექტორიაში, რომლებიც იწყება "~" სიმბოლოთი.

იპოვე. -ტიპი f -სახელი "~ *" -ბეჭდვა

იპოვეთ ფაილები მიმდინარე დირექტორიაში, რომლებიც შეიცვალა უფრო გვიან file.bak-ზე.

იპოვე. -უფრო ახალი file.bak -ტიპი f -ბეჭდვა

ოპერატორები

კრიტერიუმები შეიძლება გაერთიანდეს ოპერატორების გამოყენებით. ქვემოთ მოცემულია ოპერატორები უპირატესობის კლებადობით.

ზოგადად, ოპერატორების გამოყენებისას კრიტერიუმები მოწმდება პრიორიტეტის მიხედვით. თქვენ შეგიძლიათ შეცვალოთ ბრძანება ფრჩხილების გამოყენებით. ფრჩხილები უნდა იყოს მონიშნული უკანა ხაზით.

ოპერატორების გამოყენებით find ბრძანების გამოყენების მაგალითები

იპოვეთ ფაილები მიმდინარე დირექტორიაში, რომლებიც იწყება "~" ან c "temp"-ით და არის ჩვეულებრივი ფაილები (-ტიპი f) და არა დირექტორიები.

იპოვე. \ (- სახელი "~ *" -ან -სახელი "temp *" \) -ტიპი f -print

იპოვეთ მიმდინარე დირექტორიაში (ქვედამუშავების გარეშე - -maxdeph 1) ჩვეულებრივი ფაილები (-ფაილი f) 600 მეგაბაიტზე მეტი და 1 გიგაბაიტზე ნაკლები (-ზომა) ან ფაილები, რომელთა სახელი მთავრდება ".mpeg" (-name)-ით.

იპოვე. -maxdepth 1 \ (\ (- ზომა + 600M -and -size -1G \) -ან -სახელი "* .mpeg" \) -და -ტიპი f

მოქმედებები ფაილებზე

როდესაც Find ბრძანება შესრულებულია, შეგიძლიათ შეასრულოთ სხვადასხვა მოქმედებები ნაპოვნი ფაილებზე. განვიხილოთ ძირითადი.

შესრულებულ ბრძანებებში არგუმენტად შეგიძლიათ გამოიყენოთ () პარამეტრი, რომელიც შეიცვლება მიმდინარე ფაილის გზაზე.

მოქმედებების გამოყენებით find ბრძანების გამოყენების მაგალითები

იპოვეთ 1000 ბაიტზე დიდი ზომის რეგულარული ფაილები მიმდინარე დირექტორიაში და გაუშვით ls -dils მათზე (ls action).

იპოვე. -ზომა + 1000c -ტიპი f -ls

მოძებნეთ მიმდინარე დირექტორიაში ჩვეულებრივი ფაილები, რომლებიც იწყება ტილდის სიმბოლოთი "~" და თითოეული ფაილისთვის გამოსცათ მოთხოვნა მისი წაშლის შესახებ (rm ბრძანების შესრულებით).

იპოვე. -სახელი "~ *" -ტიპი f -ok rm () \;

დასკვნა

ამ პოსტში ჩვენ განვიხილეთ ძალიან მნიშვნელოვანი და სასარგებლო Linux Find ბრძანება, რომელიც იძლევა თითქმის შეუზღუდავი შესაძლებლობების ძიებას ფაილების მრავალი კრიტერიუმის და შაბლონის მიხედვით. და ბრძანებების (მოქმედებების) გამოყენებით, შეგიძლიათ მოძებნოთ ფაილები და შეასრულოთ ნებისმიერი ოპერაცია მათზე.

    იპოვეთ ფაილი მისი სახელით.ეს უმარტივესი ძებნა კეთდება Find უტილიტის გამოყენებით. ქვემოთ მოყვანილი ბრძანება მოძებნის ფაილს მიმდინარე დირექტორიაში და მის ყველა ქვედირექტორიაში.

    find -iname "ფაილის სახელი"

    • შეიყვანეთ -iname-ის ნაცვლად -name, რათა შეყვანილი ფაილის სახელი იგნორირება გაუკეთოთ. -name ბრძანება რეგისტრის მგრძნობიარეა.
  1. დაიწყეთ ძებნა root დირექტორიაში.სისტემის მასშტაბით ძიების გასაშვებად, დაამატეთ / მოდიფიკატორი თქვენს მოთხოვნას. ამ შემთხვევაში, find ბრძანება მოძებნის ფაილს ყველა დირექტორიაში, დაწყებული root-დან.

    find / -iname "ფაილის სახელი"

    • შეგიძლიათ დაიწყოთ ძიება კონკრეტულ დირექტორიაში; ამისათვის შეცვალეთ / დირექტორიაში მიმავალი ბილიკი, მაგალითად, / home / max.
    • გამოყენება შესაძლებელია. /-ის ნაცვლად, რომ მოძებნოთ ფაილი მხოლოდ მიმდინარე დირექტორიაში და მის ქვედირექტორიებში.
  2. გამოიყენეთ განზოგადების სიმბოლო.* იპოვონ ფაილები, რომელთა სახელი ემთხვევა მოთხოვნის ნაწილს. თქვენ შეგიძლიათ გამოიყენოთ wildcard * სიმბოლო ფაილის საპოვნელად, რომლის სრული სახელი უცნობია, ან იპოვოთ ყველა ფაილი კონკრეტული გაფართოებით.

    იპოვე / მთავარი / max -iname "* .conf"

    • ეს ბრძანება იპოვის ყველა .conf ფაილს Max მომხმარებლის საქაღალდეში (და მის ქვესაქაღალდეში).
    • გამოიყენეთ ეს ბრძანება ყველა ფაილის საპოვნელად, რომელიც ემთხვევა მოთხოვნის ნაწილს. მაგალითად, თუ თქვენს კომპიუტერში გაქვთ WikiHow-თან დაკავშირებული მრავალი ფაილი, იპოვეთ ყველა ფაილი აკრეფით "* wiki *".
  3. გააადვილეთ თქვენი ძიების შედეგების მართვა.თუ ძალიან ბევრი ძიების შედეგია, ძნელია მათ შორის სასურველი ფაილის პოვნა. გამოიყენეთ სიმბოლო | ძიების შედეგების გაფილტვრა ნაკლებით. ეს გაადვილებს თქვენი ძიების შედეგების ნახვას და გაფილტვრას.

    find / home / max -inam "* .conf" | ნაკლები

    მოძებნეთ კონკრეტული ნივთები.გამოიყენეთ მოდიფიკატორები ძიების შედეგებში მხოლოდ კონკრეტული ელემენტების საჩვენებლად. შეგიძლიათ მოძებნოთ რეგულარული ფაილები (f), დირექტორიები (d), სიმბოლური ბმულები (l), სიმბოლოების I/O მოწყობილობები (c) და ბლოკის მოწყობილობები (b).

    იპოვე / -ტიპი f -iname "ფაილის სახელი"

  4. გაფილტრეთ თქვენი ძიების შედეგები ფაილის ზომის მიხედვით.თუ თქვენ გაქვთ ბევრი ფაილი მსგავსი სახელებით თქვენს კომპიუტერში, მაგრამ იცით ფაილის ზომა, რომელსაც ეძებთ, გაფილტრეთ ძიების შედეგები ფაილის ზომის მიხედვით.

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

    • ეს ბრძანება იპოვის ყველა ფაილს, რომელიც აღემატება 50 მბ-ს. გამოიყენეთ + ან - მოდიფიკატორი, რათა მიუთითოთ ზომის ზრდა ან შემცირება. თუ არ არის + ან - მოდიფიკატორი, ბრძანება იპოვის ფაილებს, რომლებიც ზუსტად იგივე ზომისაა, როგორც მითითებული ზომა.
    • ძიების შედეგები შეიძლება გაფილტრული იყოს ბაიტებით (c), კილობაიტებით (k), მეგაბაიტებით (M), გიგაბაიტებით (G) ან 512 ბაიტიანი ბლოკებით (b). გაითვალისწინეთ, რომ ნაჩვენები მოდიფიკატორები რეგისტრის მგრძნობიარეა.
  5. გამოიყენეთ ლოგიკური ოპერატორები (ლოგიკური ოპერატორები) საძიებო ფილტრების გაერთიანებისთვის.თქვენ შეგიძლიათ გამოიყენოთ -and, -or, -not ოპერატორები სხვადასხვა ძიების ერთ შეკითხვაში გაერთიანებისთვის.

    იპოვეთ / მოგზაურობის ფოტოები -ტიპი f -ზომა + 200k -არა -inname "* 2015 *"

    • ეს ბრძანება იპოვის ფაილებს "Travelphotos" საქაღალდეში, რომლებიც აღემატება 200 KB-ს და რომელთა სახელებში არ არის ნომერი 2015.

განახლებულია: 02.11. გამოქვეყნებულია: 25.07.2016წ

ყველაზე მრავალმხრივი და ფუნქციონალური ბრძანება Linux-ში საძიებლად - იპოვე.ეს სტატია არის თაღლითური ფურცელი მისი გამოყენების მაგალითებით.

ზოგადი სინტაქსი

იპოვე<где искать> <опции>

<где искать> — გზა root დირექტორიაში, სადაც უნდა დაიწყოს ძებნა. მაგალითად, იპოვნეთ / მთავარი / მომხმარებელი - მოძებნეთ შესაბამის დირექტორიაში. გამოიყენეთ წერტილი "." მიმდინარე დირექტორიაში.

<опции> — წესების ნაკრები, რომლითაც უნდა მოძებნოთ.

* ნაგულისხმევად, ძებნა რეკურსიულია. კონკრეტულ დირექტორიაში მოსაძიებლად შეგიძლიათ გამოიყენოთ ეს ვარიანტი მაქსიმალური სიღრმე.

ვარიანტების აღწერა

ვარიანტი აღწერა
-სახელი მოძებნეთ სახელით.
-მე სახელი რეგისტრის უგრძნობი ძებნა სახელის მიხედვით.
-ტიპი

მოძებნეთ ობიექტის ტიპი. შესაძლო ვარიანტები:

  • f - ფაილი;
  • d - დირექტორია;
  • l - ბმული;
  • p - მილი;
  • s - სოკეტი.
- ზომა ობიექტის ზომა. ის დაყენებულია ბლოკებში 512 ბაიტი ან უბრალოდ ბაიტი ("c" სიმბოლოთი).
-მჯერ ფაილის შეცვლის დრო. მითითებულია დღეებში.
-მწთ შეცვალეთ დრო წუთებში.
-დრო ობიექტზე ბოლო წვდომის დრო დღეებში.
-ამინ ბოლო ზარის დრო წუთებში.
- დრო მესაკუთრის ან ობიექტზე უფლებების ბოლო ცვლილება დღეებში.
-სმ მფლობელის ან უფლებების ბოლო ცვლილება წუთებში.
- მომხმარებელი ძიება მფლობელის მიხედვით.
- ჯგუფი ჯგუფის მიხედვით.
-პერმი გარკვეული წვდომის უფლებებით.
- სიღრმე ძებნა არ უნდა დაიწყოს ძირიდან, არამედ ყველაზე ღრმა ჩადგმულ დირექტორიაში.
- მაქსიმალური სიღრმე დირექტორიაში ძიების მაქსიმალური სიღრმე. -maxdepth 0 - ძიება მხოლოდ მიმდინარე დირექტორიაში. ნაგულისხმევად, ძიება რეკურსიულია.
- გახეხვა ჩამოთვლილი დირექტორიების გამოკლებით.
- მთაზე არ გადახვიდეთ სხვა ფაილურ სისტემებზე.
-რეგექსი სახელით რეგულარული გამოხატვით.
-რეგექსტიპი<тип> რეგულარული გამოხატვის ტიპი.
-ლ აჩვენებს სიმბოლური ბმულების შინაარსს (symlink).
-ცარიელი მოძებნეთ ცარიელი დირექტორიები.
- წაშლა წაშლა ნაპოვნია.
-ლს გამომავალი როგორც ls -dgils
- ბეჭდვა ჩვენება ნაპოვნია.
-ბეჭდვა 0 გზა ნაპოვნი ობიექტებისკენ.
- აღმასრულებელი<команда> {} \; გაუშვით ბრძანება ნაპოვნი ერთზე.
-კარგი გასცეს მოთხოვნა -exec-ის შესრულებამდე.

მიმდინარე პარამეტრების სრული ნაკრების მიღება შესაძლებელია ბრძანებით კაცმა იპოვა.

მოძებნეთ მაგალითები

მოძებნეთ ფაილი სახელით

იპოვე / -სახელი "file.txt"

* ეს მაგალითი მოძებნის ფაილს სახელად file.txtმთელ ფაილურ სისტემაში დაწყებული root-დან / .

მოძებნეთ ფაილი სახელის ნაწილის მიხედვით:

პოვნა / -სახელი "* .tmp"

* ეს ბრძანება მოძებნის ყველა საქაღალდეს ან ფაილს root დირექტორიაში /, დამთავრებული .ტმპ

იპოვეთ ყველა ფაილი ან საქაღალდე, რომელიც იწყება sess_და დაასრულეთ cd

იპოვე. -name "sess_ *" -a -name "* cd"

* -a:ლოგიკური და, -o:ლოგიკური ან.

ძიება თარიღის მიხედვით

1. მოძებნეთ ფაილები, რომლებიც შეიცვალა გარკვეული რაოდენობის დღის წინ:

იპოვე. -ტიპი f -mtime +60

* ეს ბრძანება იპოვის ფაილებს, რომლებიც შეიცვალა 60 დღეზე მეტი ხნის წინ.

2. მოძებნეთ ფაილები გამოყენებით უფრო ახალი... ეს ვარიანტი ხელმისაწვდომია 4.3.3 ვერსიიდან (მის ნახვა შეგიძლიათ ბრძანებით პოვნა -- ვერსია).

ა) ცვლილების თარიღი:

იპოვე. -ტიპი f -ახალი "2019-11-02 00:00"

* გამოჩნდება ყველა ფაილი, რომელიც შეიცვალა 02.11.2019 00:00 საათიდან.

იპოვე. -ტიპი f -newermt 2019-10-31! -ახალი 2019-11-02

* იპოვის ყველა ფაილს, რომელიც შეიცვალა 10/31/2019 და 11/01/2019 (მათ შორის).

ბ) გასაჩივრების თარიღი:

იპოვე. -ტიპი f -ახალი 2019-10-08

* ყველა ფაილზე წვდომა 10/08/2019-დან.

იპოვე. -ტიპი f -newerat 2019-10-01! -ახალი 2019-11-01

* ყველა ფაილზე წვდომა ოქტომბერში.

გ) შექმნის თარიღი:

იპოვე. -ტიპი f -ახალი 2019-09-07

იპოვე. -ტიპი f -ახალი 2019-09-07! -ახალი "2019-09-09 07:50:00"

* ფაილები შექმნილია 09/07/2019 00:00:00-დან 09/09/2019 07:50-მდე

ტიპი

მოძებნეთ მიმდინარე დირექტორიაში და მის ყველა ქვესაქაღალდეში მხოლოდ ფაილებისთვის:

* - მოძებნეთ მხოლოდ ფაილები.

ძებნა წვდომის უფლებების მიხედვით

ჩვენ ვეძებთ ყველაფერს მარჯვნივ კითხვისა და წერისთვის:

პოვნა / -პერმი 0666

იპოვეთ ფაილები, რომლებზეც მხოლოდ მფლობელს აქვს წვდომა:

პოვნა / -პერმი 0600

მოძებნეთ ფაილი შინაარსის მიხედვით

find / -type f -exec grep -i -H "content" () \;

* ამ მაგალითში რეკურსიული ძიება შესრულებულია დირექტორიაში არსებული ყველა ფაილისთვის / და გამოჩნდება სტრიქონის შემცველების სია შინაარსი.

დალაგებულია ცვლილების თარიღის მიხედვით

პოვნა / მონაცემთა ტიპი f -printf "% TY-% Tm-% Td% TT% p \ n" | დალაგება -რ

* ბრძანება იპოვის ყველა ფაილს დირექტორიაში / მონაცემები, დაამატებს სახელს ცვლილების თარიღს და დაახარისხებს მონაცემებს სახელის მიხედვით. შედეგად, ჩვენ მივიღებთ, რომ ფაილები წავა მათი შეცვლილი თანმიმდევრობით.

პოვნა / მთავარი / მომხმარებელი / * -ტიპი d -exec chmod 2700 () \;

* ამ მაგალითში ჩვენ ვეძებთ ყველა დირექტორიას ( ტიპი დ) დირექტორიაში / მთავარი / მომხმარებელიდა დაუწესეთ მათთვის უფლებები 2700 .

დაგეგმილი დასუფთავება

Გუნდი იპოვემოსახერხებელი გამოსაყენებლად მოძველებული ფაილების ავტომატური წაშლისთვის.

გახსენით cron სამუშაო რედაქტირებისთვის:

და დაამატეთ:

0 0 * * * / bin / find / tmp -mtime +14 -exec rm () \;

* ამ მაგალითში ჩვენ ვშლით ყველა ფაილს და საქაღალდეს დირექტორიადან / tmp,რომლებიც უფრო ძველია 14 დღეები. დავალება მუშაობს ყოველდღე 00:00 .
* იხილეთ შესრულებადი ფაილის სრული გზა ბრძანებით რომლებიც პოულობენ- სხვადასხვა UNIX სისტემაზე, ის შეიძლება განთავსდეს სხვადასხვა ადგილას.

ნებისმიერ ოპერაციულ სისტემაში მუშაობისას, ზოგჯერ საჭიროა ინსტრუმენტების გამოყენება კონკრეტული ფაილის სწრაფად მოსაძებნად. ეს ასევე ეხება Linux-ს, ამიტომ ქვემოთ განვიხილავთ ამ OS-ში ფაილების პოვნის ყველა შესაძლო გზას. ფაილების მენეჯერის ხელსაწყოები და ბრძანებები, რომლებიც გამოიყენება "ტერმინალი".

თუ თქვენ გჭირდებათ მრავალი საძიებო პარამეტრის დაყენება სასურველი ფაილის მოსაძებნად, მაშინ ბრძანება იპოვეშეუცვლელი. სანამ განვიხილავთ მის ყველა ვარიაციას, ღირს სინტაქსისა და ვარიანტების გავლა. მას აქვს შემდეგი სინტაქსი:

ბილიკის ვარიანტის პოვნა

სადაც გზაარის დირექტორია, სადაც მოხდება ძებნა. ბილიკის განსაზღვრის სამი ძირითადი ვარიანტია:

  • / - ძიება root და მიმდებარე დირექტორიების მიხედვით;
  • ~ - მთავარი დირექტორია ძიება;
  • ./ - მოძებნეთ დირექტორიაში, რომელშიც მომხმარებელი ამჟამად მდებარეობს.

თქვენ ასევე შეგიძლიათ მიუთითოთ გზა პირდაპირ დირექტორიაში, რომელშიც სავარაუდოდ მდებარეობს ფაილი.

პარამეტრები ზე იპოვებევრი, და მათი წყალობით შეგიძლიათ განახორციელოთ მოქნილი ძიების პარამეტრები საჭირო ცვლადების დაყენებით:

  • -სახელი- განახორციელოს ჩხრეკა საჭირო ელემენტის დასახელების საფუძველზე;
  • - მომხმარებელი- მოძებნეთ ფაილები, რომლებიც ეხება კონკრეტულ მომხმარებელს;
  • - ჯგუფი- ჩაატაროს მომხმარებლის კონკრეტული ჯგუფის ძიება;
  • -პერმი- აჩვენეთ ფაილები მითითებული წვდომის რეჟიმით;
  • - ზომა n- ძიება ობიექტის ზომის მიხედვით;
  • -mtime + n -n- მოძებნეთ ფაილები, რომლებიც უფრო მეტად შეიცვალა ( + n) ან ნაკლები ( -ნ) რამოდენიმე დღის წინ;
  • -ტიპი- მოძებნეთ გარკვეული ტიპის ფაილები.

ასევე არსებობს მრავალი სახის მოძიებული ელემენტები. აქ არის მათი სია:

  • - ბლოკი;
  • - ჩვეულებრივი;
  • გვ- დასახელებული მილი;
  • - დირექტორია;
  • - ბმული;
  • - სოკეტი;
  • - სიმბოლური.

ბრძანების სინტაქსისა და ვარიანტების დეტალური ანალიზის შემდეგ იპოვეშეგიძლიათ პირდაპირ გადახვიდეთ საილუსტრაციო მაგალითებზე. ბრძანების გამოყენების ვარიანტების სიმრავლის გამო, მაგალითები მოცემულია არა ყველა ცვლადისთვის, არამედ მხოლოდ ყველაზე ხშირად გამოყენებული.

მეთოდი 1: ძებნა სახელის მიხედვით (-name ვარიანტი)

ყველაზე ხშირად, მომხმარებლები იყენებენ სისტემის ძიების ვარიანტს. -სახელი, ასე რომ დავიწყოთ ამით. მოდით შევხედოთ რამდენიმე მაგალითს.

ძიება გაფართოების მიხედვით

ვთქვათ, თქვენ უნდა იპოვოთ ფაილი სისტემაში გაფართოებით ".Xlsx"რომელიც მდებარეობს დირექტორიაში Dropbox... ამისათვის თქვენ უნდა გამოიყენოთ შემდეგი ბრძანება:

პოვნა / მთავარი / მომხმარებელი / Dropbox -სახელი "* .xlsx" -ბეჭდვა

მისი სინტაქსიდან შეგვიძლია ვთქვათ, რომ ძიება ხორციელდება დირექტორიაში Dropbox ("/ მთავარი / მომხმარებელი / Dropbox"), ხოლო სასურველი ობიექტი უნდა იყოს გაფართოებით ".Xlsx"... ვარსკვლავი მიუთითებს, რომ ძიება განხორციელდება ამ გაფართოების ყველა ფაილზე, მიუხედავად მათი სახელისა. "-დაბეჭდვა"მიუთითებს, რომ ძიების შედეგები გამოჩნდება.

ძებნა ფაილის სახელით

მაგალითად, გსურთ მოძებნოთ დირექტორიაში "/ მთავარი"ფაილი სახელით "ლუმპიკები", მაგრამ მისი გაფართოება უცნობია. ამ შემთხვევაში, თქვენ უნდა გააკეთოთ შემდეგი:

იპოვეთ ~ -სახელი "lumpics *" -ბეჭდვა

როგორც ხედავთ, სიმბოლო აქ გამოიყენება «~» , რაც ნიშნავს, რომ ძიება განხორციელდება მთავარი დირექტორიაში. ვარიანტის შემდეგ "-სახელი"მითითებულია ფაილის სახელი, რომელსაც ეძებთ ( "ლუმპიკები *"). ბოლოში ვარსკვლავი ნიშნავს, რომ ძიება განხორციელდება მხოლოდ სახელით, გაფართოების გამოკლებით.

მოძებნეთ სახელის პირველი ასო

თუ გახსოვთ მხოლოდ პირველი ასო, რომლითაც იწყება ფაილის სახელი, მაშინ არის სპეციალური ბრძანების სინტაქსი, რომელიც დაგეხმარებათ იპოვოთ იგი. მაგალითად, გსურთ იპოვოთ ფაილი, რომელიც იწყება წერილიდან "G"ადრე "L"და თქვენ არ იცით რომელ დირექტორიაშია. შემდეგ თქვენ უნდა შეასრულოთ შემდეგი ბრძანება:

პოვნა / -სახელი "*" -ბეჭდვა

ვიმსჯელებთ "/" სიმბოლოზე, რომელიც მოდის მთავარი ბრძანების შემდეგ, ძიება განხორციელდება root დირექტორიადან, ანუ მთელ სისტემაში. შემდგომ, ნაწილი «*» ნიშნავს, რომ სიტყვა, რომელსაც ეძებთ, დაიწყება კონკრეტული ასოთი. ჩვენს შემთხვევაში, დან "G"ადრე "L".

სხვათა შორის, თუ იცით ფაილის გაფართოება, მაშინ სიმბოლოს შემდეგ «*» შეგიძლიათ დააკონკრეტოთ. მაგალითად, თქვენ უნდა იპოვოთ იგივე ფაილი, მაგრამ იცით, რომ მას აქვს გაფართოება ".ოდტ"... შემდეგ შეგიძლიათ გამოიყენოთ ასეთი ბრძანება:

პოვნა / -სახელი "* .odt" -ბეჭდვა

მეთოდი 2: ძებნა წვდომის რეჟიმით (ვარიანტი - პერმ)

ზოგჯერ თქვენ უნდა იპოვოთ ობიექტი, რომლის სახელიც არ იცით, მაგრამ იცით, რა წვდომის რეჟიმი აქვს მას. შემდეგ თქვენ უნდა გამოიყენოთ ვარიანტი "-პერმი".

მისი გამოყენება საკმაოდ მარტივია, თქვენ უბრალოდ უნდა მიუთითოთ ძიების მდებარეობა და წვდომის რეჟიმი. აქ არის ასეთი ბრძანების მაგალითი:

find ~ -perm 775 -ბეჭდვა

ანუ ძიება ტარდება მთავარი განყოფილებაში და მოძიებულ ობიექტებს ექნებათ წვდომა 775 ... თქვენ ასევე შეგიძლიათ ამ რიცხვის პრეფიქსი სიმბოლოთი "-", შემდეგ აღმოჩენილ ობიექტებს ექნებათ ნებართვის ბიტები ნულიდან მითითებულ მნიშვნელობამდე.

მეთოდი 3: ძებნა მომხმარებლის ან ჯგუფის მიხედვით (პარამეტრები - მომხმარებელი და - ჯგუფი)

ნებისმიერ ოპერაციულ სისტემას ჰყავს მომხმარებლები და ჯგუფები. თუ გსურთ იპოვოთ ობიექტი, რომელიც მიეკუთვნება ამ კატეგორიებიდან ერთ-ერთს, ამისთვის შეგიძლიათ გამოიყენოთ ვარიანტი "-მომხმარებელი"ან "-ჯგუფი", შესაბამისად.

მოძებნეთ ფაილი მომხმარებლის სახელით

მაგალითად, თქვენ უნდა იპოვოთ დირექტორიაში Dropboxფაილი "ნათურები", მაგრამ თქვენ არ იცით რა ჰქვია, მაგრამ მხოლოდ ის იცით, რომ ის ეკუთვნის მომხმარებელს "მომხმარებელი"... შემდეგ თქვენ უნდა შეასრულოთ შემდეგი ბრძანება:

პოვნა / მთავარი / მომხმარებელი / Dropbox -მომხმარებლის მომხმარებელი -ბეჭდვა

ამ ბრძანებაში თქვენ მიუთითეთ საჭირო დირექტორია ( / მთავარი / მომხმარებელი / Dropbox), მიუთითებს, რომ თქვენ უნდა მოძებნოთ მომხმარებლის საკუთრებაში არსებული ფაილი ( - მომხმარებელიდა მიუთითეთ რომელ მომხმარებელს ეკუთვნის ეს ფაილი ( მომხმარებელი).

მოძებნეთ ფაილი მისი ჯგუფის სახელით

ფაილის ძიება, რომელიც ეკუთვნის კონკრეტულ ჯგუფს, ისეთივე მარტივია - თქვენ უბრალოდ უნდა შეცვალოთ ვარიანტი "-მომხმარებელი"ვარიანტზე "-ჯგუფი"და მიუთითეთ ამ ჯგუფის სახელი:

მოძებნა / -ჯგუფი სტუმარი -ბეჭდვა

ანუ, თქვენ მიუთითეთ, რომ გსურთ იპოვოთ ფაილი სისტემაში, რომელიც ეკუთვნის ჯგუფს "სტუმარი"... ძიება განხორციელდება მთელ სისტემაში, რაც დასტურდება სიმბოლოთი «/» .

მეთოდი 4: მოძებნეთ ფაილი მისი ტიპის მიხედვით (ვარიანტი - ტიპი)

Linux-ში გარკვეული ტიპის ელემენტის პოვნა საკმაოდ მარტივია, თქვენ უბრალოდ უნდა მიუთითოთ შესაბამისი ვარიანტი ( -ტიპი) და მიუთითეთ ტიპი. სტატიის დასაწყისში ჩამოთვლილია ყველა ტიპის აღნიშვნა, რომელიც შეიძლება გამოყენებულ იქნას საძიებლად.

მაგალითად, დავუშვათ, რომ გსურთ იპოვოთ ყველა ბლოკის ფაილი თქვენს მთავარ დირექტორიაში. ამ შემთხვევაში, თქვენი ბრძანება ასე გამოიყურება:

იპოვე ~ -ტიპი b -ბეჭდვა

შესაბამისად, თქვენ მიუთითეთ, რომ ეძებთ ფაილის ტიპის მიხედვით, რაც დასტურდება ოფციით "-ტიპი"და შემდეგ დაადგინეთ მისი ტიპი ბლოკის ფაილის სიმბოლოს დაყენებით - "B".

ანალოგიურად, თქვენ შეგიძლიათ აჩვენოთ ყველა დირექტორია საჭირო დირექტორიაში სიმბოლოს აკრეფით "დ":

პოვნა / მთავარი / მომხმარებელი - ტიპი d -ბეჭდვა

მეთოდი 5: ფაილის მოძიება ზომის მიხედვით (ვარიანტი - ზომა)

თუ ფაილის შესახებ ყველა ინფორმაციადან მხოლოდ მისი ზომა იცით, მაშინ ესეც შეიძლება იყოს საკმარისი მის საპოვნელად. მაგალითად, გსურთ იპოვოთ 120 მბ ფაილი კონკრეტულ დირექტორიაში, ამისათვის გააკეთეთ შემდეგი:

პოვნა / მთავარი / მომხმარებელი / Dropbox - ზომა 120 მ - ბეჭდვა

როგორც ხედავთ, ნაპოვნია ჩვენთვის საჭირო ფაილი. მაგრამ თუ არ იცით რა დირექტორიაშია ის, შეგიძლიათ მოძებნოთ მთელი სისტემა ბრძანების დასაწყისში root დირექტორიას მითითებით:

პოვნა / -ზომა 120მ - ბეჭდვა

თუ ფაილის ზომა დაახლოებით იცით, მაშინ ამ შემთხვევისთვისაც არის სპეციალური ბრძანება. თქვენ უნდა დარეგისტრირდეთ "ტერმინალი"იგივე, უბრალოდ დააყენეთ ნიშანი ფაილის ზომის წინ «-» (თუ საჭიროა მითითებულ ზომაზე ნაკლები ფაილების პოვნა) ან «+» (თუ მოძიებული ფაილის ზომა აღემატება მითითებულს). აქ არის ასეთი ბრძანების მაგალითი:

პოვნა / სახლი / მომხმარებელი / Dropbox + 100M -ბეჭდვა

მეთოდი 6: მოძებნეთ ფაილი ცვლილების თარიღის მიხედვით (ვარიანტი -mtime)

არის შემთხვევები, როდესაც ყველაზე მოსახერხებელია ფაილის ძიება მისი შეცვლილი თარიღისთვის. Linux-ზე ეს კეთდება ოფციის გამოყენებით "-Mtime"... მისი გამოყენება საკმაოდ მარტივია, ყველაფერს მაგალითით განვიხილავთ.

ვთქვათ საქაღალდეში "გამოსახულებები"ჩვენ უნდა ვიპოვოთ ობიექტები, რომლებმაც განიცადეს ცვლილებები ბოლო 15 დღის განმავლობაში. აი, რა უნდა ჩაწეროთ "ტერმინალი":

პოვნა / მთავარი / მომხმარებელი / სურათები -mtime -15 -ბეჭდვა

როგორც ხედავთ, ეს პარამეტრი აჩვენებს არა მხოლოდ ფაილებს, რომლებიც შეიცვალა მითითებულ პერიოდში, არამედ საქაღალდეებსაც. ის ასევე მუშაობს საპირისპირო მიმართულებით - შეგიძლიათ იპოვოთ ობიექტები, რომლებიც შეიცვალა მითითებულ პერიოდზე გვიან. ამისათვის თქვენ უნდა შეიყვანოთ ნიშანი ციფრული მნიშვნელობის წინ «+» :

პოვნა / მთავარი / მომხმარებელი / სურათები -mtime +10 -ბეჭდვა

GUI

გრაფიკული ინტერფეისი ბევრად აადვილებს ცხოვრებას დამწყებთათვის, რომლებმაც ახლახან დააინსტალირეს Linux დისტრიბუცია. ძიების ეს მეთოდი ძალიან ჰგავს Windows-ში განხორციელებულ მეთოდს, თუმცა მას არ შეუძლია უზრუნველყოს ყველა უპირატესობა, რასაც ის გთავაზობთ. "ტერმინალი"... მაგრამ პირველ რიგში. მოდით შევხედოთ როგორ გავაკეთოთ ფაილების ძებნა Linux-ში სისტემის გრაფიკული ინტერფეისის გამოყენებით.

მეთოდი 1: მოძებნეთ სისტემის მენიუში

ახლა განვიხილავთ ფაილების ძიებას Linux სისტემის მენიუს საშუალებით. მოქმედებები შესრულდება Ubuntu 16.04 LTS დისტრიბუციაში, თუმცა ინსტრუქციები საერთოა ყველასთვის.

გააზიარე ეს