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


განახლებულია: 11/02/2019 გამოქვეყნებულია: 25.07.2016

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

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

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

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

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

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

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

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

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

  • f - ფაილი;
  • d - დირექტორია;
  • l - ბმული;
  • p - მილი;
  • s - სოკეტი.
- ზომა ობიექტის ზომა. იგი მითითებულია ბლოკებში 512 ბაიტი ან უბრალოდ ბაიტი (სიმბოლო "c").
-მჯერ ფაილის შეცვლის დრო. მითითებულია დღეებში.
-მწთ შეცვალეთ დრო წუთებში.
-დრო ობიექტზე ბოლო წვდომის დრო დღეებში.
-ამინ ბოლო ზარის დრო წუთებში.
- დროზე მესაკუთრის ან ობიექტზე უფლებების ბოლო ცვლილება დღეებში.
-სმ ბოლო მფლობელი ან ნებართვა იცვლება წუთებში.
- მომხმარებელი ძიება მფლობელის მიხედვით.
- ჯგუფი ჯგუფის მიხედვით.
-პერმი გარკვეული წვდომის უფლებებით.
- სიღრმე ძებნა უნდა დაიწყოს არა ძირიდან, არამედ ყველაზე ღრმა ჩადგმული დირექტორიადან.
- მაქსიმალური სიღრმე ძიების მაქსიმალური სიღრმე კატალოგებში. -maxdepth 0 - ძიება მხოლოდ მიმდინარე დირექტორიაში. ნაგულისხმევად, ძიება რეკურსიულია.
- გახეხვა არ შეიცავს ჩამოთვლილ კატალოგებს.
- მთაზე არ გადახვიდეთ სხვა ფაილურ სისტემებზე.
-რეგექსი სახელით რეგულარული გამოხატვით.
-რეგექსტიპი<тип> რეგულარული გამოხატვის ტიპი.
-ლ აჩვენებს სიმბოლური ბმულების (symlinks) შინაარსს.
-ცარიელი მოძებნეთ ცარიელი დირექტორიები.
- წაშლა წაშალეთ რაც იპოვეს.
-ლს გამომავალი როგორც 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"

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

იპოვე . -ტიპი f -ახალი 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" | დალაგება -რ

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

იპოვნეთ /home/user/* -type d -exec chmod 2700 () \;

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

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

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

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

და დაამატეთ:

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

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

ეს სტატია არის ამონარიდი წიგნიდან " Linux&Unix - პროგრამირება Shell-ში"დევიდ ტანსლი.

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

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

ეს თავი მოიცავს შემდეგ თემებს, რომლებიც დაკავშირებულია find ბრძანების გამოყენებასთან:

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

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

xargs-ის გამოყენების მაგალითები და ერთად იპოვეთ ბრძანებები.

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

იპოვე path_name -პარამეტრები

სად გზა_სახელი- ეს არის დირექტორია, საიდანაც უნდა დაიწყოს ძებნა. სიმბოლო '.' გამოიყენება მიმდინარე დირექტორიას აღსანიშნავად, / სიმბოლო არის root დირექტორია და სიმბოლო "~" არის ცვლადში შენახული. $HOMEმიმდინარე მომხმარებლის მთავარი დირექტორია.

2.1. იპოვნეთ ბრძანების პარამეტრები

მოდით ვისაუბროთ find ბრძანების ძირითადი ვარიანტების აღწერაზე.

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

ბეჭდვა წერს ნაპოვნი ფაილების სრულ სახელებს სტანდარტულ გამოსავალზე

პერმის ძიება ფაილებისთვის, რომლებისთვისაც მითითებულია წვდომის რეჟიმი

Prune ეს გამოიყენება იმისათვის, რომ არ მოხდეს find ბრძანების რეკურსიული ძიების განხორციელება უკვე ნაპოვნი ბილიკის სახელზე; თუ მითითებულია -depth ვარიანტი, -prune ვარიანტი იგნორირებულია

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

ჯგუფი ძიება ფაილების, რომლებიც ეკუთვნის მოცემულ ჯგუფს

Mtime -n +nმოძებნეთ ფაილები, რომელთა შინაარსი შეცვლილია (-)-ზე ნაკლები ან (+)-ზე მეტი რამოდენიმე დღის წინ; ასევე არის პარამეტრები -atime და -ctime, რომლებიც საშუალებას გაძლევთ მოძებნოთ ფაილები ბოლო წაკითხვის თარიღის და ფაილის ატრიბუტების ბოლო ცვლილების თარიღის მიხედვით.

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

Nouser პოულობს არარსებული მომხმარებლის საკუთრებაში არსებულ ფაილებს, რომლებისთვისაც, სხვა სიტყვებით რომ ვთქვათ, ფაილში ჩანაწერი არ არის /etc/passwd

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

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

ზომა მოძებნეთ ფაილები, რომელთა ზომაა ერთეულები; შესაძლებელია შემდეგი საზომი ერთეულები: - ბლოკის ზომა 512 ბაიტი (ნაგულისხმევი პარამეტრი); თან- ბაიტი; - კილობაიტი (1024 ბაიტი); - ორი ბაიტიანი სიტყვა

სიღრმე ფაილების ძიებისას ჯერ უყურებს მიმდინარე დირექტორიაში არსებულ შიგთავსს და მხოლოდ ამის შემდეგ მოწმდება თავად დირექტორიას შესაბამისი ჩანაწერი.

F ტიპი ეძებს ფაილებს, რომლებიც კონკრეტული ტიპის ფაილურ სისტემაშია; როგორც წესი, შესაბამისი ინფორმაცია ინახება ფაილში /etc/fstab, რომელიც შეიცავს მონაცემებს ლოკალურ კომპიუტერზე გამოყენებული ფაილური სისტემების შესახებ

Mount ეძებს ფაილებს მხოლოდ მიმდინარე ფაილურ სისტემაში; ამ ოფციის ექვივალენტია -xdev -exec ოფცია Execute an interpreter ბრძანება ჭურვიყველა აღმოჩენილი ფაილისთვის; შესრულებულ ბრძანებებს აქვთ ფორმატის ბრძანება ( );

(გაითვალისწინეთ სივრცე სიმბოლოებს შორის () და 😉

Ok -exec-ის მსგავსია, მაგრამ აჩვენებს მოთხოვნას ბრძანების შესრულებამდე

2.1.1. ვარიანტი -სახელი

Find ბრძანებასთან მუშაობისას ყველაზე ხშირად გამოიყენება -name ვარიანტი. მას უნდა მოჰყვეს ფაილის სახელის ნიმუში ბრჭყალებში.
თუ გჭირდებათ გაფართოების მქონე ყველა ფაილის პოვნა. ტექსტითქვენს მთავარ დირექტორიაში მიუთითეთ სიმბოლო, როგორც ბილიკი. საწყისი დირექტორიას სახელი ამოღებული იქნება ცვლადიდან $HOME.

$ find ~ -name "*.txt" -ბეჭდვა

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

$იპოვე. -სახელი "*.txt" -ბეჭდვა

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

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

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

$ find /etc -name "hoat*" -print

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

$ find ~ -name "*.txt" -print -o -name ".*" -print

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

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

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

ქვემოთ მოცემულია, თუ როგორ უნდა იპოვოთ ყველა ფაილი, რომელთა სახელები იწყება მცირე ასოებით, რასაც მოჰყვება ორი რიცხვი და გაფართოება .ტექსტი(Მაგალითად, akh37.xt):

$იპოვე. -სახელი » [a-x] [a-x] . txt" - ბეჭდვა

2.1.2. ვარიანტი -პერმი

-perm ვარიანტი საშუალებას გაძლევთ იპოვოთ ფაილები მითითებული წვდომის რეჟიმით. მაგალითად, წვდომის რეჟიმის მქონე ფაილების მოსაძებნად 755 (ნებისმიერ მომხმარებელს შეუძლია მათი ნახვა და შესრულება, მაგრამ მხოლოდ მფლობელს აქვს დაწერის უფლება) თქვენ უნდა გამოიყენოთ შემდეგი ბრძანება:

$იპოვე. -პერმი 755 -ბეჭდვა

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

$იპოვე. -პერმი -007 -ბეჭდვა

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

2.1.3. ვარიანტი - prune

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

შემდეგი ბრძანება ეძებს მიმდინარე დირექტორიას ქვედირექტორიაში შესვლის გარეშე /ურნა:

$იპოვე. -სახელი "ბინ" -prune -o -ბეჭდვა

2.1.4. Პარამეტრები -user და --nouser

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

$ find ~ -user dave -print

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

$ პოვნა / და ა.შ. -uaer uucp -ბეჭდვა

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

$ პოვნა /სახლი -nouaer -ბეჭდვა

2.1.5. ოფციები -ჯგუფი და -არაჯგუფი

-group და -nogroup პარამეტრები მსგავსია -user-nouser/აპლიკაციები ჯგუფში მომხმარებლების საკუთრებაში არსებული ყველა ფაილის აქტები:

$ იპოვე /arra -group accta -print

შემდეგი ბრძანება ეძებს მთელ სისტემას არარსებულ ჯგუფებს მიეკუთვნება ფაილებისთვის:

$ პოვნა / -არაჯგუფი -ბეჭდვა

2.1.6. ვარიანტი -mtime

-mtime ვარიანტი უნდა იყოს გამოყენებული ფაილების ძიებისას, რომლებზეც წვდომა იყო Xრამოდენიმე დღის წინ. თუ ოფციონის არგუმენტი მოწოდებულია „-“ ნიშნით, შეირჩევა ფაილები, რომლებზეც დიდი ხანია არ იყო წვდომა. Xდღეები. არგუმენტი "+" ნიშნით იწვევს საპირისპირო შედეგს - შეირჩევა ფაილები, რომლებზეც წვდომა იყო ბოლო დროს Xდღეები.

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

$ ძებნა / -mtime -5 -ბეჭდვა

ქვემოთ მოცემულია ბრძანება, რომელიც ეძებს დირექტორიაში /var/admფაილები, რომლებიც განახლდა ბოლო სამი დღის განმავლობაში:

$ find /var/adm -mtime +3 -ბეჭდვა

2.1.7. - უფრო ახალი ვარიანტი

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

უფრო ახალი ძველი_ფაილი! -უფრო ახალი ახალი_ფაილი

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

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

Rwxr-xr-x 1 root root 92 Apr 18 11:18 age.awk
-rwxrwxr-x 1 root root 1054 Apr 20 19:37 belts.awk

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

$იპოვე. - new age.awk! -უფრო ახალი ქამრები.awk -exec არის -1 () ;
-rwxrwxr-x 1 root root 62 Apr 18 11:32 ./who.awk
-rwxrwxr-x 1 root root 49 აპრ 18 12:05 ./group.awk
-rw-r-r- 1 root root 201 აპრილი 20 19:30 ./grade2.txt
-rwxrwxr-x 1 root root 1054 აპრილი 20 19:37 ./belts.awk

მაგრამ რა მოხდება, თუ თქვენ გჭირდებათ რომ იპოვოთ შექმნილი ფაილები, ვთქვათ, ბოლო ორი საათის განმავლობაში, მაგრამ არ გაქვთ შედარებისთვის შექმნილი ფაილი ზუსტად ორი საათის წინ? შექმენით ასეთი ფაილი! ამ მიზნით არის განკუთვნილი ბრძანება touch -t, რომელიც ქმნის ფაილს მოცემული დროის შტამპით ფორმატში MMDChhmm (თვე-დღე-საათ-წუთები). Მაგალითად:

$ touch -t 05042140 dstamp
$ls -1 dstamp
-rw-r-r- 1 dave admin 0 მაისი 4 21:40 dstamp

შედეგი იქნება ფაილი, რომლის შექმნის თარიღია 4 მაისი, შექმნის დრო -21:40 (დავარაუდოთ, რომ მიმდინარე დრო არის 23:40). ახლა შეგიძლიათ გამოიყენოთ find ბრძანება -უფრო ახალი ვარიანტით, რათა იპოვოთ ყველა ფაილი, რომელიც განახლდა ბოლო ორი საათის განმავლობაში:

$იპოვე. -ახალი datamp - ბეჭდვა

2.1.8. ვარიანტი -ტიპი

OS UNIXდა Linuxსხვადასხვა ტიპის ფაილის მხარდაჭერა. სასურველი ტიპის ფაილების მოძიება ხდება find ბრძანების გამოყენებით -type ოფციით. მაგალითად, დირექტორიაში ყველა ქვეცნობარის პოვნა / და ა.შგამოიყენეთ ეს ბრძანება:

$ find /etc -type d -print

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

$იპოვე. ! -ტიპი d -ბეჭდვა

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

$ find /etc -ტიპი 1 -ბეჭდვა

2.1.9. ვარიანტი - ზომა

ძიების პროცესში ფაილის ზომა მითითებულია -size პარამეტრის გამოყენებით , სად - ფაილის ზომა ბლოკებში 512 ბაიტი. შესაძლო არგუმენტებს აქვთ შემდეგი მნიშვნელობა: +N- მოძებნეთ ფაილები, რომელთა ზომა აღემატება მითითებულს, -ნ- მითითებულზე ნაკლები, - მოცემულის ტოლი. თუ არგუმენტი დამატებით აზუსტებს სიმბოლოს თან, მაშინ ზომა ითვლება მითითებულ ბაიტებში და არა ბლოკებში და თუ სიმბოლო - კილობაიტებში. ფაილების მოსაძებნად, რომელთა ზომა აღემატება 1 მბ-ს, გამოიყენეთ ბრძანება

$იპოვე. -aize -flOOOk -ბეჭდვა

შემდეგი ბრძანება ეძებს დირექტორიას /სახლი/აპაჩიფაილები, რომელთა ზომა არის ზუსტად 100 ბაიტი:

$ მოძებნა /home/apache -ექვსი 100s -ბეჭდვა

შემდეგი ბრძანება საშუალებას გაძლევთ მოძებნოთ ფაილები 10 ბლოკზე მეტი (5120 ბაიტი):

$იპოვე. -ზომა +10 -ბეჭდვა

2.1.10. ვარიანტი ვარიანტი - სიღრმე

-depth ოფცია საშუალებას გაძლევთ მოაწყოთ ძიება ისე, რომ ჯერ შემოწმდეს მიმდინარე დირექტორიაში არსებული ყველა ფაილი (და რეკურსიულად მისი ყველა ქვედირექტორია) და მხოლოდ ბოლოს - თავად დირექტორიაში შესვლა. ეს ვარიანტი ფართოდ გამოიყენება ფირზე დასარქივებელი ფაილების სიის შექმნისას cpio ან tar ბრძანების გამოყენებით, რადგან ამ შემთხვევაში დირექტორიას სურათი ჯერ იწერება ფირზე და მხოლოდ ამის შემდეგ დგინდება მასზე წვდომის უფლებები. ეს საშუალებას აძლევს მომხმარებელს დაარქივოს ის დირექტორიები, რომლებზეც მას არ აქვს ჩაწერის უფლება.
შემდეგი ბრძანება ჩამოთვლის მიმდინარე დირექტორიაში არსებულ ყველა ფაილსა და ქვედასტატუსს:

$იპოვე. -სახელი "*" -ბეჭდვა -o -სახელი ".*" -ბეჭდვა -სიღრმე

აი, როგორი შეიძლება იყოს მისი მუშაობის შედეგები:

./.Xdefaults ./.bash_logout ./.bash_profile ./.bashrc ./.bash_nistory ./file ./Dir/filel ./Dir/file2 ./Dir/file3 ./Dir/Subdir/file4 ./Dir/Sub ./რეჟ

2.1.11. - დამაგრების ვარიანტი

Find ბრძანების -mount ვარიანტი საშუალებას გაძლევთ მოძებნოთ ფაილები მხოლოდ მიმდინარე ფაილურ სისტემაზე, გარდა სხვა დამონტაჟებული ფაილური სისტემებისა. შემდეგი მაგალითი ეძებს ყველა ფაილს გაფართოებით .xcმიმდინარე დისკის დანაყოფში:

$ find / -name "*.XC" -mount -print

2.1.12. ფაილების ძიება და შემდეგ მათი დაარქივება cpio ბრძანების გამოყენებით

cpio ბრძანება ძირითადად გამოიყენება ფაილების ფირზე ჩასაწერად და წასაკითხად. ძალიან ხშირად ის გამოიყენება Find ბრძანებასთან ერთად, მისგან ფაილების სიას მილის საშუალებით.

აი, როგორ ჩაწეროთ დირექტორიაში შიგთავსი ფირზე / და ა.შ, /სახლშიდა /აპლიკაციები:

$cd/
$ პოვნა და ა.შ. სახლის აპლიკაცია -სიღრმე -ბეჭდვა | cpio -ov > dev/rmtO

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

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

2.1.13. ოფციები -exec და -ok

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

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

$იპოვე. -ტიპი f -exec Xa -1 () ;
-rwxr-xr-x 10 root wheel 1222 იან 4 1993 ./sbin/C80
-rwxr-xr-x 10 root wheel 1222 იან 4 1993 წ./sbin/Normal
-rwxr-xr-x 10 root wheel 1222 იან 4 1993 ./sbin/Rewid

ეს ეძებს რეგულარულ ფაილებს, რომელთა სია ნაჩვენებია ეკრანზე ls -1 ბრძანების გამოყენებით.

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

$ find /log" -type f -mtime +5 -exec rm () ;

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

$იპოვე. -name "*.LOG" -mtime +5 -ok rm () ;
< rm … ./nets.LOG >? ზე

ფაილის წასაშლელად, შეიყვანეთ ზედა ამ ქმედების თავიდან ასაცილებლად - .

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

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

$ მოძებნა ~ -ბეჭდვა

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

$იპოვე. -ტიპი f -perm +4000 -ბეჭდვა

ცარიელი ფაილების სიის მისაღებად გამოიყენეთ ეს ბრძანება:

$ find / -type f -size 0 -exec Is -1 () ;

ჩემი ერთ-ერთი სისტემა ყოველდღე ქმნის სისტემის აუდიტის ჟურნალს. ჟურნალის ფაილის სახელს ემატება ნომერი, რომელიც საშუალებას გაძლევთ დაუყოვნებლივ განსაზღვროთ რომელი ფაილი შეიქმნა მოგვიანებით და რომელი შეიქმნა ადრე. მაგალითად, ფაილის ვერსიები admin.logდანომრილი თანმიმდევრობით: admin.log.001, admin.log.002და ა.შ. ქვემოთ მოცემულია Find ბრძანება, რომელიც შლის ყველა ფაილს admin.logშეიქმნა შვიდ დღეზე მეტი ხნის წინ:

$ find /logs -name 'admin.log.1 -atima +7 exec rm () ;

2.2. xargs გუნდი

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

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

$ find / -type f -print I xarge.file
/etc/პროტოკოლები: ინგლისური ტექსტი /etc/securetty: ASCII ტექსტი

ქვემოთ მოცემულია მაგალითი, რომელიც აჩვენებს ნაგავსაყრელი ფაილების ძიებას, რომელთა სახელებს echo ბრძანება ათავსებს ფაილში /tmp/core.log.

$ მოძებნა / -სახელი core -print | xarge echo > /tmp/core.log

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

$ find /appe/audit -perm -7 -print | xarge chmod o-w

ჩვენი სიის დამრგვალება არის მაგალითი, რომელშიც grep ბრძანება ეძებს ფაილებს, რომლებიც შეიცავს სიტყვას. მოწყობილობა«:

$ პოვნა / -ტიპი f -print | xarge grep "მოწყობილობა"

2.3. დასკვნა

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

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

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

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

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

ეს არის იგივე მარტივი ბრძანება:

იპოვე - სახელი სიყვარული
თუ არსებობს ფაილი სახელად "love", მაშინ find ბრძანება აღმოაჩენს ფაილს ან რამდენიმე ფაილს, როგორიცაა:

Jzb@kodos:~$ find -name love ./projects/love jzb@kodos:~$
მაგალითად, ჩვენ მოვძებნით ყველა ფაილს mp3 ფორმატში და შევქმნით სრულ სიას ფაილში:

ფაილი /home/artix -iname ".mp3" > ./list.txt

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

შემდეგი, ჩვენ ვიპოვით ფაილებს txtx ფორმატში, არა მხოლოდ ფაილებს, არამედ ტექსტურ ფაილებს, რომლებიც შეიცავს სიტყვას "LEON":

ფაილი /home/artix -iname ".txt" -exec grep -H "LEON" "()" \; > ./list.txt
კარგია, უკვე გვაქვს თურმე Linux ფაილების ძიება სიტყვით"ლეონი". ანალოგიურად, შეგიძლიათ წაშალოთ არასაჭირო ნივთები და ფონზე, ასე რომ თქვენ შეგიძლიათ გააგრძელოთ მუშაობა:

ფაილი /home/artix -iname ".bak" -exec rm "()" \; &
ეს აადვილებს ჩვენს ცხოვრებას. ეს არის უმარტივესი რამ, მაგრამ მათში ბევრი სასარგებლო რამ არის.

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

იპოვეთ ./ -მწთ -10 #მოდიფიკაციის თარიღი 10 წუთზე ნაკლები პოვნა ./ -mtime +1 #მოდიფიკაციის თარიღი 24 საათზე მეტი პოვნა ./ -ტიპი f -atime +10 # წვდომის დრო 10 დღეზე მეტი პოვნა ./ -ტიპი f-amin - 10 #მოდიფიკაციის თარიღი ბოლო 10 წუთი

ტექსტის პოვნა Linux ფაილებში

ხშირად ხდება, რომ თქვენ გჭირდებათ ტექსტის ძიება Linux ფაილებში. მე მოგცემთ ფაილების ძიების 2 მაგალითს: (linux, freebsd) გჭირდებათ ტექსტის ფრაგმენტი ფაილებში:

# find /var/named/ -type f -exec grep "MX" () \; serversnetwork.info. 14400 IN MX 10 ფოსტა
და კიდევ ერთი:

# grep -rl "MX" /var/named/ /var/named/serversnetwork.info.db

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

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

იპოვეთ -ზომა +150k
უნდა აჩვენოს ფაილები, რომლებიც აღემატება 150 ათასს. და ვარიანტი

იპოვეთ -ზომა -94k
რაც არ უნდა იყოს 94K-ზე ნაკლები.

-size ფუნქცია ეძებს მითითებული ზომის ფაილებს და შესრულებისას ასე გამოიყურება:

$იპოვე. -ზომა 3500k - ბეჭდვა
ეს ვარიანტი მოძებნის ფაილებს Linux-ში და აჩვენებს მათ ეკრანზე 3500 კილობაიტის ზომით, რომლებიც ამ საქაღალდეშია განთავსებული. თუ თქვენ გჭირდებათ ფაილების პოვნა, რომლებიც 250 კილობაიტზე ნაკლებია, ბრძანება ასე გამოიყურება:

$იპოვე. -ზომა -200k -ბეჭდვა
თუ თქვენ გჭირდებათ ფაილების პოვნა, რომელთა ზომა 555 მეგაბაიტზე მეტია, მაშინ ჩვენ გამოვიყენებთ ვარიანტს:

$ პოვნა / -ზომა +555M -ბეჭდვა
ალბათ სწორედ აქ დავასრულებ ჩემი სტატიის წერას.

ახლა თქვენ შეგიძლიათ თავად მოძებნოთ ფაილები, მოძებნოთ ტექსტი Linux ფაილებში, მოძებნოთ ფაილები თარიღის მიხედვით!

მადლობა ყველას, ნახვამდის!

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

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

grep ბრძანება (იგულისხმება გლობალური რეგულარული გამოხატვის ბეჭდვა) არის ერთ-ერთი ყველაზე პოპულარული ბრძანება Linux ტერმინალში და არის GNU პროექტის ნაწილი.

ამ პარამეტრში შეგიძლიათ გამოიყენოთ grep პროგრამა, რათა მოძებნოთ ფაილების შინაარსი დირექტორიაში:

grep -r -n "ტექსტი" / გზა

grep -r "სტრიქონის ძებნა"
grep -rl $"\xEF\xBB\xBF"

სად:
-n აჩვენებს ხაზს, სადაც ფრაგმენტი იქნა ნაპოვნი;
-r ეძებს რეკურსიულად, ფაილებში თავად / path დირექტორიაში და მის ქვედირექტორიებში;

თქვენ ასევე შეგიძლიათ დაამატოთ -C 3 ვარიანტი, რომ ნახოთ +- 3 სტრიქონი გარშემო (მოპოვებულის ზემოთ და ქვემოთ).

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

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

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

/usr/bin/find /folder -type f -exec grep -H "search string" () ;

-name ოფციის შემდეგ მითითებული მნიშვნელობა განსაზღვრავს ფაილის სახელის რუკების ნიმუშს. ფაილის ტიპის დასაზუსტებლად შეგიძლიათ გამოიყენოთ -type ოფცია, სადაც უნდა გამოიყენოთ სპეციალური ასოები მნიშვნელობის თვისებებში: d დირექტორიასთვის, f ფაილისთვის, l სიმბოლური ბმულისთვის და ა.შ. -user, -group და -size ფუნქციები. ასევე საკმაოდ სასარგებლოა. მათი მნიშვნელობებია მომხმარებლის სახელი, კატეგორიის სახელი და ფაილის ზომა ბაიტებში.

იპოვეთ /var/www/ -სახელი "file.conf"
იპოვნეთ /var/www/ -სახელი "*.conf"

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

იპოვეთ ~/ -name *.cpp
იპოვე ~/ -name *.cpp -user "my-username" -group "my-group"
იპოვნეთ ~/ -name "*.config" -type f -exec grep "user" () \;
იპოვეთ /home/ (-სახელი "*.php" -ან -სახელი "*.html" -ან -სახელი "*.js")
-exec grep -lHEi $"\xEF\xBB\xBF" () ;

და ალბათ უფრო მარტივიც

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

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

რომელი კატა
/ბინა/კატა
რომელიც დოკერ-სტაკი
/home/username/.local/bin/docker-stack

Linux-ში მოძებნეთ ფაილის შინაარსი locate ბრძანებით

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

locate ბრძანება, როგორც ჩანს, ალტერნატივაა მოსაძებნად.

ეს გუნდი, როგორც წესი, უფრო სწრაფად მუშაობს და ადვილად შეუძლია მოძებნოს (ფართო გაგებით - რაღაცის მიღწევის, რაღაცის პოვნის სურვილი; სუბიექტის მოქმედებები, რომლებიც მიმართულია ახალი ან დაკარგული (დავიწყებული) მოპოვებაზე: ახალი ინფორმაცია (ინფორმაციის ძებნა), მონაცემები. ) მთელ ფაილურ სისტემაში. Linux-ს აქვს სპეციალური grep ბრძანება, რომელიც იღებს საძიებო შაბლონს და ფაილის სახელს (დასახელებული მონაცემთა ზონა შესანახ საშუალებებზე). თუ შესატყვისები აღმოჩნდება, ისინი გამოჩნდება ტერმინალში. ზოგადად, გამოთქმა შეიძლება შედგებოდეს როგორც "grep search_pattern file_name". იმისათვის, რომ იპოვოთ ფაილები locate ბრძანების გამოყენებით, უბრალოდ გამოიყენეთ შემდეგი სინტაქსი:

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

Find and Locate ბრძანებები შესანიშნავი ინსტრუმენტებია UNIX-ის მსგავს ოპერაციულ სისტემებზე ფაილების მოსაძებნად. თითოეულ ამ კომუნალურ პროგრამას აქვს თავისი უპირატესობები. ჩვენ შევხედეთ ბრძანებების გამოყენებას ლინუქსის ოპერაციულ სისტემაში ეკიპაჟის გამოსავლის მოსაძიებლად და გასაფილტრად. სწორად გამოყენების შემთხვევაში, ეს პროგრამა გახდება ძლიერი ინსტრუმენტი თქვენს ხელში. მიუხედავად იმისა, რომ პოვნისა და მდებარეობის ბრძანებები თავისთავად ძალიან ძლიერია, მათი გაფართოება შესაძლებელია სხვა ბრძანებებთან კომბინაციით. მას შემდეგ რაც ისწავლით find-თან და ლოკაციასთან მუშაობას, სცადეთ მათი შედეგების გასუფთავება wc, sort და grep ბრძანებების გამოყენებით.

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

1) იპოვნეთ:ბრძანების სტრიქონიდან ფაილების მოსაძებნად შეგიძლიათ გამოიყენოთ ბრძანება "ძებნა". ამ ბრძანებას აქვს შემდეგი სინტაქსი:

იპოვნეთ ბილიკის კრიტერიუმების მოქმედება

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

"კრიტერიუმები" - ძიების პარამეტრები.

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

2) იპოვნეთ:გუნდი "იპოვე"ეს არის "find -name" ბრძანების ალტერნატივა. Find ბრძანება ეძებს ფაილებს ფაილური სისტემის არჩეულ ნაწილში და პროცესი შეიძლება არ იყოს ძალიან სწრაფი. მეორეს მხრივ, locate ბრძანება ეძებს ფაილებს სპეციალურად ამ მიზნით შექმნილ მონაცემთა ბაზაში /var/lib/locatedb, რაც ბევრად უფრო სწრაფია. მონაცემთა ბაზის განახლებისთვის გამოიყენეთ ბრძანება განახლებული b.

3) სადაც:სად არის"აბრუნებს კოდის მდებარეობას (ვარიანტი -b), man pages (ვარიანტი -m) და წყაროს ფაილებს (option -s) მითითებული ბრძანებისთვის. თუ არ არის მითითებული პარამეტრები, გამოჩნდება ყველა ხელმისაწვდომი ინფორმაცია. ეს ბრძანება უფრო სწრაფია ვიდრე " იპოვე"მაგრამ ნაკლებად სრული.

4) რომელიც:გუნდი" რომელიც"ეძებს ყველა ბილიკს, რომელიც ჩამოთვლილია PATH ცვლადში მითითებული ბრძანებისთვის.

5) ტიპი:

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

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

შესაბამისი სახელი. სიაში ასევე შედის მეტსახელები და ფუნქციები

თუ ვარიანტი არ არის მითითებული -გვ. TO

ბრძანების ჰეში არ არის წვდომა, თუ ვარიანტი მითითებულია -ა. გუნდი ტიპიაბრუნებს 0,

თუ მოიძებნება ერთი არგუმენტი მაინც და 1 სხვაგვარად.

მცველი

Explo.ru - ყველაფერი ტურიზმისა და დასვენების შესახებ: ბოლო წუთის ტურები და მოგზაურობები თურქეთში, ეგვიპტეში,