Linux və Unix Command istifadə: find

LinuxUnix komutu bir kataloq hiyerarşisindəki faylları axtarır.

Tapşırıq üçün sintaksis:

[yol ...] [ifadəsi]

Təsvir

Bu dərslik səhifəsi, tapmaq üçün GNU versiyasını sənədləşdirir. Komanda, verilən məlumata qədər prioritet qaydalarına (aşağıda Operatorlar bölməsinə baxın) görə verilən veriyi soldan sağa qiymətləndirərək hər bir verilən fayl adına köklənən kataloq ağacını axtarır; başqa bir sözlə, sol tərəf üçün yanlışdır əməliyyatlar doğru və ya hansı nöqtədə tapıldığı növbəti fayl adına hərəkət edir.

Başladığınız ilk arqument:

ifadənin başlanğıcı olaraq alınır; axtarış ardınca gedən hər hansı arqument və ifadənin qalan hissəsindən sonra hər hansı arqumentlər. Heç bir yol verilmirsə, mövcud kataloq istifadə olunur. Heç bir ifadə verilmirsə, ifadə- yazı istifadə olunur.

Bütün fayllar səhvlər baş verərsə, bütün fayllar müvəffəqiyyətlə işlənərsə, 0'dan böyük olur.

İfadələri

Bu ifadə variantlardan ibarətdir (müəyyən bir faylın işlənilməsinə deyil, ümumi əməliyyatın yerinə yetirilməsindən və hər zaman həqiqətə dönməsindən), testlər (əsl və ya yanlış dəyəri qaytaran) və hərəkətlər (yan təsirləri olan və əsl və ya saxta dəyər), hamısı operatorlar tərəfindən ayrılır. Ifadə - və operatorun atıldığı yerə düşür. Ifadə başqa bir şey deyilsə , -prune , sözün doğru olduğu bütün fayllarda yazılır .

Seçimlər

Bütün seçimlər həmişə doğrudur. Onlar həmişə effektiv olurlar, əksinə, ifadələrində öz yerlərini əldə etdikdə işlənirlər. Buna görə aydınlıq üçün ifadələrin başında yerləşdirmək yaxşıdır.

gündüz başlanğıc 24 saat əvvəl deyil, bu günün başlanğıcından ( vaxt, -yamim, -minmin, -birim, -mmin-mtime ) dəfə ölçün.
-depth Dizinin özündən əvvəl hər bir kataloqun məzmununu işləyin.
-sürət edin Səsgötürən əlaqələri kəsmək. Məqsədlər - noleaf .
Köməkçi və ya yardımçı Bul və çıxış komut satırı istifadə xülasə çap.
-maxdepth [sayı] Komut satırı arqumentlərinin altındakı dizinlərin ən çox sayda (qeyri-mənfi tam ədədi) desen. Ifadəsi -maxdepth 0 yalnız testlər və hərəkətləri komanda xəttinin argumentlərinə tətbiq edir.
-mindepth [sayı] Nömrədən az səviyyədə (qeyri-mənfi tamsayı) hər hansı bir test və ya hərəkət etməyin. Ifadəsi -mindepth 1 command line argümanları xaricində bütün faylları işlədir .
-mount Digər fayl sistemlərində dizinləri endirməyin. Find-xdev üçün alternativ bir ad, digər tapmaq versiyaları ilə uyğunluq üçün.
-noleaf Dizinlərin sərt link sayından 2 ədəd daha az alt dizini ehtiva etdiyini fərz etmə.
-version və ya - versiya Bulanın versiyasını və çıxışını yazdırın.
-xdev Digər fayl sistemlərində dizinləri endirməyin.

* Bu seçim, CD-ROM və ya MS-DOS fayl sistemləri və ya AFS həcmi bağlama nöqtələri kimi Unix kataloq-link konvensiyasına əməl etməyən fayl sistemlərini axtararkən tələb olunur. Normal Unix fayl sistemindəki hər bir kataloq ən azı 2 sabit linkə malikdir: adı və adı . (dövr) giriş. Əlavə olaraq, onun alt qovluqları (varsa) hər bir qovluğa əlaqəli bir giriş var.

Bir kataloqun, kataloqun keçid sayından iki az alt dizinini qeyd etdikdən sonra, bir kataloqun araşdırılması zamanı kataloqdakı girişlərin qalan hissəsi qeyri-kataloqlar olduğunu (kataloq ağacında yarpaq faylları) olduğunu bilir. Yalnız faylların adları müayinə edilməli olduqda, onları statləşdirməyə ehtiyac yoxdur; bu axtarış sürətində əhəmiyyətli bir artım təmin edir.

Testlər

Nümerik arqumentlər aşağıdakı kimi göstərilə bilər:

+ n Ndən çoxdur .
-n Az n üçün.
n Tam olaraq n.
-amin n Fayla son n dəqiqə əvvəl daxil oldu.
- yeni [fayl] Fayla daha çox dəyişdirildikdən son dövrdə daha son verildi. -Konversiyadan təsirlənirsə, yalnız təqvimdən əvvəl gəldiyi təqdirdə - yeni bir əmr xəttinə daxil olun.
-deyə n Şəkil sonuncu dəfə n * 24 saat əvvəl əldə edildi.
-cmin n Faylın statusu n dəqiqə əvvəl dəyişdi.
-cnewer [fayl] Faylın vəziyyəti son dəfə dəyişmişdir.
- cnewer təsirlənir, əgər - əmr xəttindən əvvəlki nöqtəyə qədər gəldiyi təqdirdə - yalnız təqib edin .
-başlıq n Faylın statusu son dəfə dəyişdirildi n * 24 saat əvvəl.
azadlıq Fayl boşdur və ya müntəzəm bir fayl və ya bir kataloq.
-sallı Həmişə yanlış.
-fstype [tip] Fayl müəyyən bir fayl sistemindədir. Dəyişən fayl sistemi, Unix'in müxtəlif versiyalarında dəyişir; Unix və ya digər versiyalarında qəbul edilən fayl sistemlərinin natamam siyahısı: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Fayl sisteminizin növlərini görmək üçün% F direktivi ilə -printf istifadə edə bilərsiniz.
-hid n Faylın sayısal qrup nömrəsi ndir .
-group [gname] Fayl, gname qrupuna aiddir (icazə verilən rəqəmli qrup şəxsiyyəti).
soyadı [desen] Kimi -name, amma matç həssasdır.
-Adı [desen] Adı- ad , ancaq matç həssasdır. Məsələn, fo *F nümunələri Foo , FOO , foo , fOo və s.
-num n Faylın inode nömrəsi n .
-tip [model] Yol kimi, amma matç həssasdır.
-yargex [model] -Regex kimi, amma matç həssasdır.
n-lər Faylın n əlaqələri var.
-dname [model] Fayl, məzmunu shell modelinə uyğun olan simvolik bir linkdir. Metakarakteriyalar müalicə etmirlər . xüsusi olaraq.
-mmin n Faylın məlumatları n dəqiqə əvvəl son olaraq dəyişdirildi.
-mtime n Faylın məlumatları son dəfə n * 24 saat əvvəl dəyişdirildi.
-Adı [model] Fayl adı bazası (silinən aparıcı qovluqlarla gedən yol) qabığa uyğun olur. Metakarakteriyalar ( * , ? , Və [] ) birinə uyğun gəlmir . baza adının başında. Bir qovluğu və onun altında olan faylları yox saymaq üçün, istifadə edin ; yolun təsviri bir nümunə baxın .
-newer [fayl] Fayl fayldan daha son dövrdə dəyişdirildi. Sözün sonrakı hissəsi təsirlənir - əgər əmr xəttindən əvvəlki nöqtə - daha sonra gəldiyi təqdirdə.
çoxsaylı Heç bir istifadəçi, faylın sayısal istifadəçi kimliğine uyğun gəlir.
-qrup Heç bir qrup fayl numarası qrupu kimliğine uyğun deyil.
-path [model] Fayl adı qəlib nümunəsi modelinə uyğun gəlir . Metakarakteriyalar müalicə etmirlər . xüsusi olaraq; məsələn, tapmaq. -path './sr*sc ./src/misc (əgər varsa) adlı bir qovluq üçün giriş yazdırır. Bütün kataloq ağacını göz ardı etmək üçün ağacdakı hər bir faylın yoxlanılmasından çox istifadə edin. Məsələn, src / emacs kataloqunu və bütün faylları və qovluqları atlayın və tapılan digər faylların adlarını yazmaq üçün bu kimi bir işi gör. -path './src/emacs' -prune -o -print
-perm [rejimi] Faylın icazə bitləri dəqiqdir [rejimi] (sekizli və ya simvolik). Simvolik rejimler 0 nöqtəsindən gediş nöqtəsi olaraq istifadə edirlər.
-perm-kod İzləmə bitlərinin hamısı [rejim] fayl üçün təyin edilir.
-perm + rejimi Hər hansı icazəsiz bit [rejimi] fayl üçün müəyyən edilir.
-regex [model] Fayl adı müntəzəm ifadə nümunəsi ilə uyğun gəlir . Bu, bütün yolda bir axtarış deyil, axtarış deyil. Məsələn, ./fubar3 adlı bir faylla uyğunlaşmaq üçün normal ifadəni istifadə edə bilərsiniz . * Bar. ya da . * b. * 3 , lakin b. * r3 deyil .
-size n [bckw] Faylda n ədədləri istifadə olunur. Vahidlər 512 byte blokları və ya əgər b aşağıdakı n , baytlar c, aşağıdakı əgər n , kilobayt əgər k kəlmə n və ya 2-byte sözləri w əgər izləyir. Ölçü dolayı blokları saymaz, ancaq əslində ayrılmayan seyf fayllardakı blokları sayar.
-doğru Həmişə doğru.
-type c Fayl növü c növü:
b Block (buffered) xüsusi
c Karakter (tamponsuz) xüsusi
d Directory
s Named boru (FIFO)
f Daimi fayl
l Sembolik link
s Soket
D qapı (Solaris)
- n Faylın sayısal istifadəçi nömrəsi ndir .
istifadə olunan n Statusun sonuncu dəfə dəyişdirildikdən sonra son günlərdə nüsxə alındı.
istifadəçi uname Fayl istifadəçi uname (ədədi istifadəçi icazə verilir) məxsusdur.
-xtype c Fayl simvolik bir link olmadığı təqdirdə -tibi ilə eynidır. Simvolik əlaqələr üçün: ifa verilsə, fayl növü c faylına bir link olduqda doğru; ifa- verilmişdirsə, c- l əgər doğru olarsa. Başqa sözlə, simvolik əlaqələr üçün,
-xtype faylın tipini yoxlayır -Tip yoxlayır.

Tədbirlər

-exec əmri ;

Əmr edin ; 0 statusu qaytarıldığında doğru. Bütün arqumentləri tapmaq üçün, ';' ibarət olan bir sübuta qədər əmrlərə mübahisələr alınır; qarşılaşdı. '{}' Sətri, tapmaq üçün bəzi versiyalarda olduğu kimi tək başına olduğu arqumentlərdə deyil, komanda üçün arqumentlərdə meydana gələn hər yerdə işlənən cari fayl adı ilə əvəz olunur. Bu tikililərin hər ikisi qaça bilməli (bir '\' ilə) və ya qabığın genişləndirilməsindən qorunmaq üçün istifadə edilə bilər. Komanda başlanğıc kataloqunda aparılır.

-fls faylı

Doğru; kimi -ls kimi -fprint kimi fayl yazmaq.

-fprint fayl

Doğru; tam fayl adını fayl faylına yazdırın. Tapşırıq işlədiyi zaman fayl mövcud deyilsə, yaradılır; əgər varsa, kəsilmişdir. '/ Dev / stdout' 'və `/ dev / stderr' 'fayl adları xüsusi olaraq işlənir; sırasıyla standart çıxış və standart səhv çıxışına istinad edirlər.

-fprint0 faylı

Doğru; kimi -print0, lakin -fprint kimi faylya yazın.

-fprintf fayl formatı

Doğru; -printf kimi, lakin -fprint kimi fayl yazmaq.

-ok komanda ;

Istifadəçi -exec kimi istifadəçi (standart girişdə) əvvəlcə; cavab 'y' və ya 'Y' ilə başlamasa, əmr verməyin və yalana dönməyin.

-print

Doğru; standart çıxışı tam fayl adını, ardından yeni bir satırı yazdırın.

-print0

Doğru; standart çıxışdakı tam fayl adını, sonra null xarakterlə çap edin. Bu, tapmaq nəticəsini işləyən proqramlar tərəfindən doğru şəkildə şərh edilmək üçün yeni satırlar olan fayl adlarına imkan verir.

-printf formatı

Doğru; standart çıxış üzrə çap formatını , '\' escape və '%' direktivlərini şərh. Alan eni və dəqiqliyi 'printf' C funksiyası ilə göstərilə bilər. -printdən fərqli olaraq, -printf simli sonunda yeni bir satır əlavə etmir. Qaçışlar və direktivlər:

\ a

Zəng siqnalı.

\ b

Backspace.

\ c

Bu formatdan dərhal yazdırmayı dayandırın və çıxışını yandırın.

\ f

Forma bəslənmə.

\ n

Newline.

\ r

Təyyarə qaytarılması.

\ t

Yatay sekmə.

\ v

Şaquli nişanı.

\\

Bir literal terslik ('\').

\ NN

ASCII kodu NNN (sekizlik) olan xarakter.

Hər hansı bir başqa bir xarakterin ardından bir '\' simvolu adi bir xarakter olaraq qəbul edilir, buna görə də hər ikisi də çap olunur.

%%

Bir literal faiz göstəricisi.

a

Faylın son giriş saatı, C `ctime funksiyası tərəfindən qaytarılmışdır.

A k

Faylın son giriş saatı '@' ilə göstərilən formatda və ya C `strftime funksiyası üçün bir direktivdir. K üçün mümkün değerler aşağıda listelenmiştir; bəzi sistemlər sistemlər arasında "strftime" fərqlərindən ötəri bütün sistemlərdə mövcud olmaya bilər.

@

1 yanvar 1970-ci ildən, 00:00 GMT.

Vaxt sahələri:

H

saat (00..23)

Mən

saat (01..12)

k

saat (0..23)

l

saat (1..12)

M

dəqiqə (00..59)

s

Yerli AM və ya PM

r

saat, 12 saat (hh: mm: ss [AP] M)

S

ikinci (00..61)

T

vaxt, 24 saat (hh: mm: ss)

X

Yerli zamanın nümayəndəliyi (H: M: S)

Z

vaxt zonası (məsələn, EDT) və ya heç bir zaman zonası təyin edilsə heç bir şey yoxdur

Tarix sahələri:

a

locale-nin qısaldılmış həftəlik adı (Sun..Sat)

A

Yerli günün tam iş günü adı, dəyişən uzunluq (Bazar ... Tətidir)

b

Yerli ayın qısaldılmış ay adı (Jan..Dec)

B

yerli tam ay adı, dəyişən uzunluq (yanvar .. dekabr)

c

Yerli günün tarixi və saatı (Cmt 04 Nov 12 12:33:33 EST 1989)

d

ayın günü (01..31)

D

tarix (mm / dd / yy)

h

b

j

il günü (001..366)

m

ay (01..12)

U

həftənin birinci günü kimi bazar günü həftənin sayı (00..53)

w

həftənin günü (0..6)

W

həftənin birinci günü kimi bazar ertəsi həftəsi (00..53)

x

Yerli tarixin təqdimatı (mm / dd / yy)

y

ilin son iki rəqəmi (00..99)

Y

il (1970 ...)

% b

512 baytlıq blokdakı faylın ölçüsü (yuvarlaqlaşdırıldı).

c

Faylın son statusu dəyişən vaxt C`ttime funksiyası tərəfindən qaytarılan formatda.

C k

Faylın son statusu dəyişən zaman,% A ilə eyni olan k ilə göstərilən formatda dəyişir.

% d

Dizin ağacında fayl dərinliyi; 0, fayl bir komanda satırı arqumenti deməkdir.

% f

Silinmiş aparıcı hər hansı bir kataloqla fayl adı (yalnız son element).

F

Dosyanın fayl sisteminin növü; bu dəyər -fstype üçün istifadə edilə bilər.

% g

Qrupun adı olmadıqda, qrupun qrup adı və ya sayısal qrup kimliği.

G

Faylın sayısal qrupu kimliği.

% h

Fayl adının aparıcı qovluqları (son elementdən başqa).

H

Dosyanın altında olan komut satırı arqumenti.

i

Fayl inode nömrəsi (decimal).

% k

1K blokda faylın ölçüsü (yuvarlatılmış).

% l

Sembolik link obyekti (faylı sembolik bir link deyilsə, boş dize).

% m

Faylın icazə bitləri (sekizli).

% n

Fayl üçün sərt linklərin sayı.

% s

Faylın adı.

P

Faylın adını çıxardıqdan sonra əmr satırı arqumentinin adı ilə.

% s

Baytdakı faylın ölçüsü.

% t

Faylın C `ctime funksiyası tərəfindən qaytarılmış formatda son dəyişiklik müddəti.

T k

Faylın son dəfə dəyişmə müddəti,% A ilə eyni olan k ilə göstərilən formatda.

u

İstifadəçinin adı olmadıqda, faylın istifadəçi adı və ya ədədi istifadəçi nömrəsi.

U

Faylın ədədi istifadəçi nömrəsi.

Hər bir digər simvoldan sonra '%' simvolu atılır (lakin digər xarakter çap olunur).

-prune

Əgər dərinliyin verilməməsi doğru deyilsə; cari qovluğu inməyin.
Əgər dərk edilirsə, səhv; heç bir təsiri yoxdur.

-s

Doğru; standart faylda `ls -dils 'formatında cari fayl siyahısı. Blok sayıları 1K bloklarıdır, ətraf mühit dəyişən POSIXLY_CORRECT təyin olunduqda, bu halda 512 bayt blok istifadə olunur.

Operatorlar

Prioritetliyin azalması üçün siyahıda:

( expr )

Məcburi qüvvə.

!! expr

Ekspertin yalan olduğu təqdirdə.

ekspres deyil

Eyni ilə ! expr .

expr1 expr2

Və (nəzərdə tutulmuş); expr1 səhv olduğu təqdirdə expr2 qiymətləndirilmir.

expr1- a expr2

Expr1 expr2 kimi eyni.

expr1 - və expr2

Expr1 expr2 kimi eyni.

expr1 -o expr2

Və ya; expr1 doğru deyilsə expr2 qiymətləndirilmir.

expr1 - expr2

Expr1 -o expr2 kimi eyni.

expr1 , expr2

Siyahı; həm expr1, həm də expr2 həmişə qiymətləndirilir. Expr1 dəyəri atılır; siyahının dəyəri expr2 dəyəridir.

Nümunələr

tapmaq / ev - istifadəçi joe

Istifadəçi joe məxsus kataloq / ev altında hər bir fayl tapın.

find / usr -name * stat

".stat" da bitən / usr qovluğunun hər bir faylını tapın.

find / var / spool -mtime +60

60 gündən çox müddətdən sonra redaktə edilmiş / var / spool kataloqunda hər bir fayl tapın.

tapmaq / tmp -name core -type f -print | xargs / bin / rm -f

Kataloq / tmp altındakı və ya altındakı faylları tapın və onları silin. Yeni satırlar, tək və ya cüt tırnakları və ya boşluqları olan hər hansı bir fayl varsa, bu düzgün işləməyəcəyini unutmayın.

tapmaq / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Dizin / tmp dizinindeki və ya altındaki faylları tapmaq və faylları bir və ya cüt tırnak, boşluq və ya yeni satırları ehtiva edən fayl və ya qovluq adları düzgün işlənmiş şəkildə işlədilir. Hər bir faylda stat (2) çağırmamaq üçün qarşısını almaq üçün - adı testi- tetki testindən əvvəl gəlir.

tapın. -type f -exec fayl '{}' \;

Mövcud kataloqdakı hər faylda 'file' faylını çalışır. Diqqət yetirir ki, bracketlər onları təkrar tirnoq nişanlarına yerləşdirirlər, bunları şərhdən qoruma script punktuasiyası kimi qoruyur. Nöqtə nöqtəsi, backslash istifadə etməklə eyni şəkildə qorunur, baxmayaraq ';' bu vəziyyətdə də istifadə edilə bilərdi.

/ \ (-perm -4000 -fprintf /root/suid.txt '% # m% u% p \ n' \), \ \ (-size + 100M -fprintf /root/big.txt '% -10s% p \ n '\)

/root/suid.txt faylına/root/big.txt ünvanına böyük faylları daxil edərkən faylları və qovluqları bir dəfə siyahıya salın .

$ HOME -mtime axtar 0

Son iyirmi dörd saat ərzində dəyişmiş olan ev kataloqunuzdakı faylları axtarın. Bu komanda bu şəkildə işləyir, çünki hər bir faylın sonuncu dəfə dəyişdirildiyi vaxtı 24 saat bölünür və qalıqlar atılır. Bu, -mtime ilə uyğunlaşmaq deməkdir

0 , bir faylın keçmişdə 24 saatdan az bir müddətə dəyişiklik etməsi lazımdır.

tapın. 664

Sahibinə və qrupuna oxumaq və yazmağa icazə verən faylları axtarın, ancaq digər istifadəçilər oxumaqla yaza bilməzlər. Bu meyarlara cavab verən, lakin digər icazə bitslərinə malik olan fayllar (məsələn, kimsə faylın icrası mümkündürsə) eşleşmeyebilir.

tapın. -perm -664

Istifadəçi və qrup üçün oxumaq və yazmağa icazə verən və digər istifadəçilərin oxumaq üçün icazə verən faylları axtarın, istənilən əlavə icazə bitlərinin (məsələn, icra edilə bilən bit) olması nəzərə alınmadan. Məsələn, 0777 rejimi olan bir faylya uyğun olacaq.

tapın. -perm / 222

Kimsə (onların sahibi, qrupu və ya başqa biri tərəfindən) yazılabilir faylları axtarın.

tapın. -perm / 220 tapın. -perm / u + w, g + w tapın. -perm / u = w, g = w

Bu əmrlərin hamısı eyni şeydir, amma birincisi fayl rejimin sekizli təmsilini, ikisi isə simvolik formadan istifadə edir. Bu əmrlər bütün sahibləri və ya qrupu tərəfindən yazıla bilən faylları axtarır. Faylların həm sahibinə, həm də qrupuna uyğunlaşdırılmasına ehtiyac yoxdur; ya edəcəyik.

tapın. -perm -220 tapın. -perm-g + w, u + w

Həm bu əmrlər eyni şeydir; həm sahibləri, həm də qrupu tərəfindən yazıla bilən faylları axtarın.

tapın. -perm -444 -perm / 222! -perm / 111 tapın. -perm-a + r -perm / a + w! -perm / a + x

Bu iki əmr də hər kəs üçün oxunan faylları (-perm -444 və ya perm-a + r) axtarmaq üçün ən azı yazma bit setinə (-perm / 222 və ya perm / a + w) malikdir, hər kəs üçün (! -perm / 111 və! -perm / a + x)

Mühüm: Şəxsi kompüterinizdə bir komanda necə istifadə edildiyini görmək üçün man komutunu ( % man ) istifadə edin.