Файлын нэрийг олох. Find команд болон түүний сонголтыг жишээн дээр харуулав. Find ашиглах жишээ

Энэ бол Ubuntu систем дээр суулгасны дараа Apache2 серверийн зөв ажиллагааг шалгахад ашигладаг анхдагч тавтай морилно уу. Энэ нь Ubuntu Apache багцыг гаргаж авсан Debian дээрх ижил хуудас дээр үндэслэсэн болно. Хэрэв та энэ хуудсыг уншиж чадвал энэ сайтад суулгасан Apache HTTP сервер зөв ажиллаж байна гэсэн үг. Чи тэгэх ёстой энэ файлыг солих HTTP серверээ үргэлжлүүлэн ажиллуулахын өмнө (/var/www/html/index.html дээр байрладаг).

Хэрэв та энэ вэб сайтын энгийн хэрэглэгч бөгөөд энэ хуудас юу болохыг мэдэхгүй байгаа бол энэ нь засварын улмаас сайт одоогоор боломжгүй байна гэсэн үг юм. Хэрэв асуудал хэвээр байвал сайтын админтай холбогдоно уу.

Тохиргооны тойм

Ubuntu-н Apache2-ийн өгөгдмөл тохиргоо нь дээд талын өгөгдмөл тохиргооноос өөр бөгөөд Ubuntu хэрэгслүүдтэй ажиллахад оновчтой болсон хэд хэдэн файлд хуваагддаг. Тохируулгын систем нь /usr/share/doc/apache2/README.Debian.gz-д бүрэн баримтжуулсан. Бүрэн баримт бичгийг эндээс үзнэ үү. -д зориулсан баримт бичиг вэб серверХэрэв энэ сервер дээр apache2-doc багц суулгасан бол гарын авлагаас өөрөө олж болно.

Ubuntu систем дээр Apache2 вэб сервер суулгах тохиргоо дараах байдалтай байна.

/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.ачаалах | `-- *.conf |-- conf-идэвхжүүлсэн | `-- *.conf |-- сайтуудыг идэвхжүүлсэн | `-- *.conf

  • apache2.conf нь үндсэн тохиргооны файл юм. Энэ нь вэб серверийг эхлүүлэх үед үлдсэн бүх тохиргооны файлуудыг оруулснаар хэсгүүдийг нэгтгэдэг.
  • ports.conf нь үндсэн тохиргооны файлаас үргэлж байдаг. Энэ нь ирж буй холболтуудын сонсох портуудыг тодорхойлоход хэрэглэгддэг бөгөөд энэ файлыг хүссэн үедээ өөрчлөх боломжтой.
  • mods-enabled/, conf-enabled/ болон sites-enabled/ директоруудын тохиргооны файлууд нь модулиуд, глобал тохиргооны фрагментууд эсвэл виртуал хостын тохиргоог удирдах тусгай тохиргооны хэсгүүдийг агуулдаг.
  • Тэдгээр нь *-available/-ын боломжтой тохиргооны файлуудыг хооронд нь холбосноор идэвхждэг. Эдгээрийг манай туслах a2enmod, a2dismod, a2ensite, a2dissite, a2enconf, a2disconf ашиглан удирдах хэрэгтэй. Дэлгэрэнгүй мэдээллийг тус тусын хүний ​​хуудаснаас харна уу.
  • Хоёртын файлыг apache2 гэж нэрлэдэг. Орчны хувьсагчдыг ашигладаг тул анхдагч тохиргоонд apache2-г /etc/init.d/apache2 эсвэл apache2ctl -аар эхлүүлэх/ зогсоох шаардлагатай. /usr/bin/apache2 руу шууд залгахад ажиллахгүйанхдагч тохиргоотой.

Баримт бичгийн үндэс

Анхдагч байдлаар, Ubuntu нь вэб хөтчөөр нэвтрэхийг зөвшөөрдөггүй ямар ч/var/www , public_html лавлах (идэвхжүүлсэн үед) болон /usr/share (вэб аппликешнүүдэд зориулсан) сангуудаас тусад нь файл. Хэрэв таны сайт өөр газар байрладаг вэб баримт бичгийн үндэс ашиглаж байгаа бол (жишээ нь /srv) та /etc/apache2/apache2.conf доторх баримт бичгийн үндсэн лавлахыг цагаан жагсаалтад оруулах шаардлагатай байж магадгүй.

Үндсэн Ubuntu баримт бичгийн үндэс нь /var/www/html юм. Та /var/www доор өөрийн виртуал хостуудыг хийж болно. Энэ нь өмнөх хувилбаруудаас ялгаатай бөгөөд хайрцагнаас илүү аюулгүй байдлыг хангадаг.

Асуудлыг мэдээлэх

Ubuntu-тай Apache2 багцын алдааг мэдээлэхийн тулд ubuntu-bug хэрэгслийг ашиглана уу. Гэсэн хэдий ч шинэ алдаа мэдээлэхээсээ өмнө шалгана уу.

Модулиудын (PHP болон бусад гэх мэт) алдааг вэб серверт биш, харин тус тусын багцад мэдээлнэ үү.

Аливаа үйлдлийн систем дээр ажиллаж байхдаа заримдаа багаж хэрэгслийг ашиглах шаардлагатай болдог түргэн хайлтэнэ эсвэл тэр файл. Энэ нь Линуксд бас хамаатай тул бүгдийг доор авч үзэх болно боломжит арга замуудЭнэ үйлдлийн систем дэх файлуудыг хайх. хэрэгсэл болгон танилцуулах болно файлын менежер, болон ашигласан командууд "Терминал".

Хэрэв танд хэрэгтэй файлаа олохын тулд олон хайлтын параметрүүдийг зааж өгөх шаардлагатай бол тушаалыг өгнө олохорлуулшгүй. Түүний бүх хувилбаруудыг авч үзэхээсээ өмнө синтакс болон сонголтуудыг судлах нь зүйтэй. Энэ нь дараах синтакстай байна:

замын сонголтыг олох

Хаана зам- энэ бол хайлт хийх лавлах юм. Замыг тодорхойлох гурван үндсэн сонголт байдаг:

  • / — үндсэн болон зэргэлдээ лавлах сангаас хайх;
  • ~ - гэрийн лавлахаар хайх;
  • ./ — тухайн хэрэглэгчийн байгаа лавлахаас хайх.

Та мөн тухайн файл байгаа гэж үзэж байгаа лавлах руу шууд хүрэх замыг зааж өгч болно.

Сонголтууд олохМаш олон зүйл байдаг бөгөөд тэдгээрийн ачаар та шаардлагатай хувьсагчдыг тохируулах замаар уян хатан хайлтын тохиргоог хийж чадна.

  • - нэр- хайж буй элементийнхээ нэрийг үндэс болгон хайлт хийх;
  • - хэрэглэгч- тодорхой хэрэглэгчтэй холбоотой файлуудыг хайх;
  • - бүлэг- тодорхой хэрэглэгчдийн бүлгийг хайх;
  • - перм- заасан хандалтын горимтой файлуудыг харуулах;
  • -хэмжээ n- объектын хэмжээнээс хамааран хайх;
  • -mtime +n -n- -аас илүү өөрчлөгдсөн файлуудыг хайх ( +n) буюу түүнээс бага ( -n) өдрийн өмнө;
  • -төрөл- тодорхой төрлийн файл хайх.

Мөн таны хайж буй олон төрлийн элементүүд байдаг. Энд тэдний жагсаалт байна:

  • б- блок;
  • е- энгийн;
  • х- нэртэй хоолой;
  • г- каталог;
  • л- холбоос;
  • с- залгуур;
  • в- бэлгэдлийн.

Командын синтакс болон сонголтуудын нарийвчилсан дүн шинжилгээ хийсний дараа олохТа тайлбарласан жишээнүүд рүү шууд очиж болно. Тушаалыг ашиглах олон сонголттой тул жишээг бүх хувьсагчдад өгөхгүй, харин зөвхөн хамгийн их хэрэглэгддэг хувьсагчдад өгөх болно.

Арга 1: Нэрээр хайх (-нэрийн сонголт)

Ихэнхдээ хэрэглэгчид систем хайх сонголтыг ашигладаг - нэр, тэгэхээр бид эндээс эхлэх болно. Хэд хэдэн жишээг харцгаая.

Өргөтгөлөөр хайх

Та системээс өргөтгөлтэй файлыг олох хэрэгтэй гэж бодъё ".xlsx", энэ нь лавлахад байрладаг "Dropbox". Үүнийг хийхийн тулд та дараах тушаалыг ашиглах хэрэгтэй.

/home/user/Dropbox-ыг олох -нэр "*.xlsx" -хэвлэх

Түүний синтаксаас бид хайлтыг лавлахад явуулдаг гэж хэлж болно "Dropbox" ("/home/user/Dropbox"), хүссэн объект нь өргөтгөлтэй байх ёстой ".xlsx". Од тэмдэг нь энэ өргөтгөлийн бүх файл дээр нэрийг нь харгалзахгүйгээр хайлт хийх болно гэдгийг харуулж байна. "-хэвлэх"хайлтын үр дүнг харуулах болно гэдгийг харуулж байна.

Файлын нэрээр хайх

Жишээлбэл, та лавлахаас хайхыг хүсч байна "/гэр"нэртэй файл "бөөн", гэхдээ түүний өргөтгөл тодорхойгүй байна. Энэ тохиолдолд та дараахь зүйлийг хийх хэрэгтэй.

олох ~ - "бөөнцөр" гэж нэрлэх - хэвлэх

Таны харж байгаагаар энд ашигласан тэмдэг нь юм «~» , энэ нь хайлт нь гэрийн лавлах хэсэгт явагдана гэсэн үг юм. Сонголтын дараа "-нэр"хайсан файлын нэрийг зааж өгсөн ( "бөөнөөр*"). Төгсгөлд байгаа од нь өргөтгөлийг харгалзахгүйгээр зөвхөн нэрээр хайлт хийнэ гэсэн үг юм.

Нэрийн эхний үсгээр хайх

Хэрэв та зөвхөн файлын нэрний эхний үсгийг санаж байвал түүнийг олоход туслах тусгай тушаалын синтакс байдаг. Жишээлбэл, та үсгээр эхэлсэн файлыг олохыг хүсч байна "g"өмнө "би", мөн энэ нь ямар директорт байгааг та мэдэхгүй. Дараа нь та дараах тушаалыг ажиллуулах хэрэгтэй.

олох / -нэр "*" -хэвлэх

Үндсэн командын дараа шууд гарч ирдэг "/" тэмдэгтээс харахад хайлт нь үндсэн лавлахаас эхлээд бүхэл бүтэн системээр явагдана. Дараа нь хэсэг «*» хайсан үг нь тодорхой үсгээр эхэлнэ гэсэн үг. Манай тохиолдолд -аас "g"өмнө "би".

Дашрамд хэлэхэд, хэрэв та файлын өргөтгөлийг мэддэг бол тэмдгийн дараа «*» та үүнийг зааж өгч болно. Жишээлбэл, та ижил файлыг олох хэрэгтэй, гэхдээ энэ нь өргөтгөлтэй гэдгийг та мэднэ ".odt". Дараа нь та энэ тушаалыг ашиглаж болно:

олох / -нэр "*.odt" -хэвлэх

Арга 2: Хандалтын горимоор хайх (-пермийн сонголт)

Заримдаа та нэрийг нь мэдэхгүй объектыг олох хэрэгтэй болдог, гэхдээ та ямар хандалтын горимтой болохыг мэддэг. Дараа нь та сонголтыг ашиглах хэрэгтэй "-перм".

Үүнийг ашиглахад маш энгийн бөгөөд та хайлтын байршил, хандалтын горимыг зааж өгөхөд л хангалттай. Ийм тушаалын жишээ энд байна:

олох ~ -пермийн 775 -хэвлэх

Өөрөөр хэлбэл, хайлт нь гэрийн хэсэгт хийгдэх бөгөөд хайж буй объектууд хандах боломжтой болно 775 . Та мөн энэ тооны өмнө "-" тэмдэг бичиж болно, дараа нь олсон объектууд тэгээс заасан утга хүртэлх зөвшөөрлийн биттэй байх болно.

Арга 3: Хэрэглэгч эсвэл бүлгээр хайх (хэрэглэгч ба бүлэг сонголтууд)

Үйлдлийн систем бүр хэрэглэгчид болон бүлгүүдтэй байдаг. Хэрэв та эдгээр ангиллын аль нэгэнд хамаарах объектыг олохыг хүсвэл сонголтыг ашиглаж болно "-хэрэглэгч"эсвэл "-бүлэг", тус тус.

Файлыг хэрэглэгчийн нэрээр нь олоорой

Жишээлбэл, та лавлахаас олох хэрэгтэй "Dropbox"файл "Чийдэн", гэхдээ та үүнийг юу гэж нэрлэдгийг мэдэхгүй, зөвхөн хэрэглэгчийнх гэдгийг л мэдэж байгаа "хэрэглэгч". Дараа нь та дараах тушаалыг ажиллуулах хэрэгтэй.

/home/user/Dropbox -хэрэглэгчийн хэрэглэгч -хэвлэх

Энэ тушаалд та шаардлагатай лавлахыг зааж өгсөн ( /гэр/хэрэглэгч/Dropbox), та хэрэглэгчийн харьяалагдах файлыг хайх хэрэгтэйг зааж өгсөн ( - хэрэглэгч), мөн энэ файл нь аль хэрэглэгчийнх болохыг зааж өгсөн ( хэрэглэгч).

Файлыг бүлгийн нэрээр нь хайж байна

Тодорхой бүлэгт хамаарах файлыг хайх нь адилхан хялбар байдаг - та зүгээр л сонголтыг солих хэрэгтэй "-хэрэглэгч"сонголт руу "-бүлэг"мөн энэ бүлгийн нэрийг заана уу:

олох / -бүлэг зочин -хэвлэх

Өөрөөр хэлбэл, та бүлэгт хамаарах файлыг системээс олохыг хүсч байгаагаа илэрхийлсэн "зочин". Хайлт нь систем даяар явагдах бөгөөд үүнийг тэмдэгтээр тэмдэглэнэ «/» .

Арга 4: Файлыг төрлөөр нь хайх (-type сонголт)

Линукс дээр тодорхой төрлийн элементийг олох нь маш энгийн бөгөөд та тохирох сонголтыг зааж өгөх хэрэгтэй. -төрөл) ба төрлийг зааж өгнө. Өгүүллийн эхэнд хайлт хийхэд ашиглаж болох бүх төрлийн тэмдэглэгээг жагсаасан болно.

Жишээлбэл, та өөрийн үндсэн лавлахаас бүх блок файлуудыг олохыг хүсч байна. Энэ тохиолдолд таны тушаал дараах байдлаар харагдах болно.

олох ~ -төрлийн b -хэвлэх

Үүний дагуу та файлын төрлөөр хайж байгаагаа зааж өгсөн бөгөөд энэ нь сонголтоос харагдаж байна "-төрөл", дараа нь блок файлын тэмдгийг тавьж түүний төрлийг тодорхойлно - "б".

Үүнтэй адилаар та командын тэмдэгтийг оруулснаар хүссэн лавлахдаа бүх санг харуулах боломжтой "г":

/home/user -type d -print -ийг олох

Арга 5: Файлыг хэмжээгээр нь хайх (-size сонголт)

Хэрэв таны файлын талаар зөвхөн хэмжээ л байвал түүнийг олоход хангалттай байх болно. Жишээлбэл, та тодорхой лавлахаас 120 МБ файл олохыг хүсвэл дараах зүйлийг хийнэ үү.

олох /home/user/Dropbox -хэмжээ 120M -хэвлэх

Таны харж байгаагаар бидэнд хэрэгтэй файл олдсон. Гэхдээ хэрэв та ямар директорт байгааг мэдэхгүй байгаа бол командын эхэнд үндсэн директорийг зааж өгснөөр системийг бүхэлд нь хайж болно.

олох / -хэмжээ 120M -хэвлэх

Хэрэв та файлын ойролцоогоор хэмжээг мэдэж байгаа бол энэ тохиолдолд тусгай тушаал байна. Та бүртгүүлэх шаардлагатай "Терминал"ижил зүйл, файлын хэмжээг зааж өгөхийн өмнө тэмдэг тавь «-» (заасан хэмжээнээс бага файл хайх шаардлагатай бол) эсвэл «+» (хэрэв таны хайж буй файлын хэмжээ заасан хэмжээнээс том бол). Ийм тушаалын жишээ энд байна:

олох / home/user/Dropbox +100M -хэвлэх

Арга 6: Файлыг өөрчилсөн огноогоор олох (сонголт -mtime)

Файлыг өөрчилсөн огноогоор нь хайх нь хамгийн тохиромжтой үе байдаг. Линукс дээр үүнийг тохируулгыг ашиглан хийдэг "-цаг". Үүнийг ашиглахад маш энгийн тул бүх зүйлийг жишээгээр харцгаая.

Хавтас дотор гэж хэлье "Зураг"Бид сүүлийн 15 хоногт өөрчлөлт орсон объектуудыг олох хэрэгтэй. Энд та юу бичих хэрэгтэй вэ "Терминал":

/home/user/Images -mtime -15 -хэвлэх

Таны харж байгаагаар энэ сонголт нь зөвхөн заасан хугацаанд өөрчлөгдсөн файлуудыг төдийгүй хавтаснуудыг харуулдаг. Энэ нь мөн эсрэг чиглэлд ажилладаг - заасан өдрөөс хойш өөрчлөгдсөн объектуудыг олж болно. Үүнийг хийхийн тулд та тоон утгын өмнө тэмдгийг оруулах хэрэгтэй «+» :

/home/user/Images -mtime +10 -хэвлэх

GUI

График интерфейс нь дөнгөж суулгасан эхлэгчдэд амьдралыг илүү хялбар болгодог Линукс түгээлт. Энэ аргаХайлт нь Windows үйлдлийн системтэй маш төстэй боловч түүний санал болгож буй бүх давуу талыг хангаж чадахгүй "Терминал". Гэхдээ хамгийн түрүүнд хийх зүйл. Тиймээс, системийн график интерфэйсийг ашиглан Линукс дээр файлуудыг хэрхэн хайх талаар авч үзье.

Арга 1: Системийн цэсээр хайх

Одоо бид цэсээр дамжуулан файлуудыг хэрхэн хайх талаар авч үзэх болно Линукс системүүд. Хийсэн үйлдлүүд нь Ubuntu 16.04 LTS түгээлтэд хийгдэх боловч заавар нь хүн бүрт нийтлэг байдаг.

Энэ нийтлэл нь номноос авсан хэсэг юм " Linux & Unix - Shell дээр програмчлал", Дэвид Тансли.

Би жаахан яаран засвар хийсэн тул үсгийн алдаа анзаарсан бол коммент хэсэгт бичнэ үү.

Ихэнхдээ ажлын явцад нэвтрэх эрх, хэмжээ, төрөл гэх мэт тодорхой шинж чанартай файлуудыг хайх шаардлагатай байдаг. Find команд нь бүх нийтийн хайлтын хэрэгсэл юм: энэ нь танд файл, лавлах хайх, систем дээрх бүх лавлах эсвэл зөвхөн одоогийн лавлахыг үзэх боломжийг олгодог.

Энэ бүлэг нь find командыг ашиглахтай холбоотой дараах сэдвүүдийг хамарна.

командын сонголтыг олох;

Find командын янз бүрийн сонголтыг ашиглах жишээ;

Xargs болон олох командуудыг хамтад нь ашиглах жишээ.

Find командын боломжууд нь өргөн цар хүрээтэй бөгөөд санал болгож буй сонголтуудын жагсаалт маш том юм. Энэ бүлэгт тэдгээрийн хамгийн чухал зүйлийг тайлбарласан болно. Find команд нь дискнээс ч хайх боломжтой NFS (Сүлжээний файлын систем- сүлжээний файлын систем), мэдээж хэрэг, хэрэв танд зохих зөвшөөрөл байгаа бол. IN ижил төстэй тохиолдлуудтушаалыг ихэвчлэн дотор гүйцэтгэдэг дэвсгэр, учир нь лавлах модыг үзэх нь цаг хугацаа их шаарддаг. Find командын ерөнхий хэлбэр нь:

олох замын_нэр - сонголтууд

Хаана замын_нэр- энэ бол хайлтыг эхлүүлэх директор юм. '.' тэмдэгт нь одоогийн лавлахыг, / тэмдэгт нь үндсэн лавлах, "~" тэмдэгт нь хувьсагчид хадгалагдсан тэмдэгт юм. $HOMEанхны лавлах одоогийн хэрэглэгч.

2.1. тушаалын сонголтыг олох

Find командын үндсэн сонголтуудын тайлбар дээр анхаарлаа хандуулцгаая.

Нэр Өгөгдсөн загварт тохирсон файлуудыг хайх

Print Олдсон файлуудын бүтэн нэрийг стандарт гаралт руу бичнэ

Перм Заасан хандалтын горимыг тохируулсан файлуудыг хайх

Prune Энэ нь олох командыг аль хэдийн олдсон замын нэр дээр рекурсив хайлт хийхээс сэргийлэхэд хэрэглэгддэг; хэрэв -depth сонголтыг зааж өгсөн бол -prune сонголтыг үл тоомсорлодог

Хэрэглэгч тодорхой хэрэглэгчийн эзэмшдэг файлуудыг хайх

Групп Өгөгдсөн бүлэгт хамаарах файлуудыг хайх

Цаг -n +nАгуулга (-)-аас бага эсвэл (+)-ээс их өөрчлөгдсөн файлуудыг хайх nөдрийн өмнө; Мөн -atime болон -ctime сонголтууд байдаг бөгөөд энэ нь файлыг хамгийн сүүлд уншсан огноо болон файлын шинж чанарын сүүлийн өөрчлөлтийн огнооны дагуу хайх боломжийг олгодог.

Nogroup Байгаагүй бүлэгт хамаарах файлуудыг хайх, өөрөөр хэлбэл файлд ямар ч оруулга байхгүй. /etc/groups

Nouser Байгаагүй хэрэглэгчийн эзэмшдэг файлуудыг олдог, өөрөөр хэлбэл файлд ямар ч оруулга байхгүй. /etc/passwd

Шинээр файлЗаасан файлаас хожуу үүсгэгдсэн файлуудыг хайх

Тодорхой төрлийн файлуудыг хайх, тухайлбал: б- тусгай блок файл; г- каталог; -тай- тусгай тэмдгийн файл; х- нэртэй хоолой; л- бэлгэдлийн холбоос; с- залгуур; е- ердийн файл

Хэмжээ n Хэмжээтэй файлуудыг хайх nнэгж; Дараахь хэмжилтийн нэгжүүд боломжтой. б- блокийн хэмжээ 512 байт (анхдагч тохиргоо); -тай- байт; к- килобайт (1024 байт); w- хоёр байт үг

Гүн Файл хайхдаа эхлээд одоогийн лавлахын агуулгыг үзэж, зөвхөн дараа нь тухайн директорт тохирох оруулгыг шалгана.

F төрөл Тодорхой төрлийн файлын системд байгаа файлуудыг хайдаг; Ихэвчлэн холбогдох мэдээллийг файлд хадгалдаг /etc/fstab, локал компьютер дээр ашиглагдаж буй файлын системийн талаарх мэдээллийг агуулсан

Mount Зөвхөн одоогийн файлын систем дэх файлуудыг хайдаг; Энэ сонголттой дүйцэхүйц нь -xdev -exec сонголт юм Орчуулагч командыг гүйцэтгэх бүрхүүлбүх илрүүлсэн файлуудын хувьд; Гүйцэтгэсэн командууд нь форматлах тушаалтай ( );

(() ба 😉 тэмдэгтүүдийн хоорондох зайг анхаарна уу

Ok -exec-тэй төстэй боловч командыг гүйцэтгэхийн өмнө хүлээх мөрийг харуулдаг

2.1.1. Сонголт - нэр

Find командтай ажиллахдаа -name сонголтыг ихэвчлэн ашигладаг. Үүний дараа файлын нэрийн хэв маягийг хашилтанд оруулах ёстой.
Хэрэв та өргөтгөлтэй бүх файлыг олох шаардлагатай бол . txtгэрийн лавлахдаа тэмдэгтийг замын нэрээр зааж өгнө үү. Эхлэх сангийн нэрийг хувьсагчаас гаргаж авна $HOME.

$ find ~ -нэр "*.txt" -хэвлэх

Өргөтгөл бүхий бүх файлыг олохын тулд .txtОдоогийн директорт байгаа бол дараах тушаалыг ашиглана уу.

$ олох. -нэр "*.txt" -хэвлэх

Одоогийн директор доторх нэрэндээ дор хаяж нэг том үсэгтэй бүх файлыг олохын тулд дараах тушаалыг оруулна уу:

$ олох. -нэр "*" -хэвлэх

Каталогоос олоорой /гэх мэтнэр нь тэмдэгтээр эхэлсэн файлууд " хост", тушаал зөвшөөрнө

$ find / etc -name "hoat*" -хэвлэх

Өргөтгөлтэй бүх файлыг эхлүүлэх лавлахаас хай .txtтүүнчлэн нэр нь цэгээр эхэлсэн файлуудыг тушаал гаргадаг

$ find ~ -нэр "*.txt" -хэвлэх -o -нэр ".*" -хэвлэх

Сонголт нь логик OR үйлдлийн тэмдэглэгээ юм. Хэрэв үүнийг ашиглавал ердийн нэртэй файлуудаас гадна нэр нь цэгээр эхэлсэн файлууд олдох болно.

Хэрэв та систем дээрх өргөтгөлгүй бүх файлыг жагсаахыг хүсвэл доорх тушаалыг ажиллуулна уу, гэхдээ энэ нь системийг ихээхэн удаашруулж болзошгүй тул болгоомжтой байгаарай.

$ олох / -нэр "*" -хэвлэх

Дараах нь нэр нь жижиг үсгээр эхэлсэн, дараа нь хоёр тоо болон өргөтгөл бүхий бүх файлыг хэрхэн олохыг харуулж байна. .txt(Жишээлбэл, akh37.xt):

$ олох. -нэр » [a-x] [a-x] . txt" - хэвлэх

2.1.2. Сонголт - перм

-perm сонголт нь танд заасан хандалтын горимтой файлуудыг олох боломжийг олгодог. Жишээлбэл, хандалтын горимтой файлуудыг хайх 755 (ямар ч хэрэглэгч тэдгээрийг харж, гүйцэтгэх боломжтой, гэхдээ зөвхөн эзэмшигч нь бичих эрхтэй) та дараах тушаалыг ашиглана уу.

$ олох. -пермийн 755 -хэвлэх

Хэрэв та горимын утгын өмнө зураас оруулбал энэ нь заасан бүх зөвшөөрлийн битийг тохируулсан файлуудыг хайх бөгөөд үлдсэн битүүдийг үл тоомсорлох болно. Жишээлбэл, дараах тушаал нь бусад хэрэглэгчид бүрэн хандах боломжтой файлуудыг хайдаг.

$ олох. -перм -007 -хэвлэх

Хэрэв горимын утгын өмнө нэмэх тэмдэг оруулсан бол заасан зөвшөөрлийн битүүдийн ядаж нэгийг нь тохируулсан файлуудыг хайж, үлдсэн битүүдийг үл тоомсорлодог.

2.1.3. Сонголт - тайрах

Хэрэв та тодорхой лавлахаас хайхыг хүсэхгүй байгаа бол -prune сонголтыг ашиглана уу. Энэ нь таныг одоогийн замын нэрээр хайхаа зогсоохыг заадаг. Хэрэв замын нэр нь лавлахыг зааж байвал find команд түүн рүү орохгүй. Хэрэв -depth сонголт байгаа бол -prune сонголтыг үл тоомсорлодог.

Дараах команд нь дэд директор руу орохгүйгээр одоогийн лавлахаас хайдаг /бин:

$ олох. -нэр "бин" -prune -o -хэвлэх

2.1.4. Сонголтууд -хэрэглэгч ба --nouser

Тодорхой хэрэглэгчийн эзэмшиж буй файлуудыг олохын тулд find командын -user сонголтыг, дараа нь хэрэглэгчийн нэрийг зааж өгнө. Жишээлбэл, хэрэглэгчийн эзэмшдэг файлуудыг анхны лавлахаас хайх Дэйв, дараах тушаалыг ашиглан гүйцэтгэнэ.

$ find ~ -хэрэглэгч Dave -хэвлэх

Каталогоос хайх /гэх мэтхэрэглэгчийн эзэмшдэг файлууд uucp, дараах тушаалыг гүйцэтгэдэг:

$ олох /etc -uaer uucp -хэвлэх

-nouser сонголтын ачаар байхгүй хэрэглэгчдэд хамаарах файлуудыг хайх боломжтой. Үүнийг ашиглах үед эзэмшигч нь файлд оруулаагүй файлуудыг хайдаг /etc/passwd. Тодорхой хэрэглэгчийн нэрийг зааж өгөх шаардлагагүй, find команд нь шаардлагатай бүх ажлыг өөрөө хийдэг. Байгаагүй хэрэглэгчдийн эзэмшиж байгаа, лавлахад байгаа бүх файлыг олох /гэр, энэ тушаалыг оруулна уу:

$ find /home -nouaer -print

2.1.5. Сонголтууд -group болон -nogroup

-group болон -nogroup сонголтууд нь -тэй төстэй -бүлэг дэх хэрэглэгчдийн эзэмшдэг бүх файлын хэрэглэгч-нouser/апп үйлдэл:

$ олох / arra - бүлэг accta - хэвлэх

Дараах тушаал нь байхгүй бүлгүүдэд хамаарах файлуудыг бүхэлд нь системээс хайдаг.

$ олох / -nogroup -хэвлэх

2.1.6. Сонголт -mtime

-mtime сонголтыг хандсан файлуудыг хайхдаа ашиглах ёстой Xөдрийн өмнө. Хэрэв сонголтын аргументыг '-' тэмдгээр хангасан бол хэсэг хугацаанд хандаагүй файлуудыг сонгох болно. Xөдрүүд. "+" тэмдэгтэй аргумент нь эсрэг үр дүнд хүргэдэг - хамгийн сүүлд хандсан файлуудыг сонгосон. Xөдрүүд.

Дараах тушаал нь сүүлийн таван хоногт шинэчлэгдээгүй бүх файлыг олох боломжийг танд олгоно.

$ олох / -mtime -5 -хэвлэх

Лавлах хайлт хийх командыг доор харуулав /var/admСүүлийн гурван өдрийн дотор шинэчлэгдсэн файлууд:

$ олох /var/adm -mtime +3 -хэвлэх

2.1.7. - шинэ сонголт

Хэрэв та заасан хоёр файлыг шинэчлэх хооронд хандсан файлуудыг олох шаардлагатай бол -newer сонголтыг ашиглана уу. Үүнийг хэрэглэх ерөнхий хэлбэр нь дараах байдалтай байна.

Шинээр хуучин_файл! - шинэ шинэ_файл

гарын үсэг зурах ! ' нь логик үгүйсгэх оператор юм. Энэ нь: -ээс шинэ файлуудыг олох гэсэн үг хуучин_файл, гэхдээ түүнээс дээш настай шинэ_файл.

Бидэнд хоёр хоногийн зайтай шинэчлэгдсэн хоёр файл байна гэж бодъё:

Rwxr-xr-x 1 язгуур үндэс 92 4 сарын 18 11:18 age.awk
-rwxrwxr-x 1 үндэс үндэс 1054 4 сарын 20 19:37 belts.awk

Дараа нь шинэчлэгдсэн бүх файлыг олохын тулд нас.awk, гэхдээ түүнээс өмнө бүсүүд.awk, дараах тушаалыг ажиллуулна уу (-exec сонголтыг доор тайлбарласан болно):

$ олох. -шинэ нас.awk! -шинэ belts.awk -exec Is -1 () ;
-rwxrwxr-x 1 үндэс үндэс 62 4 сарын 18 11:32 ./who.awk
-rwxrwxr-x 1 язгуур үндэс 49 4 сарын 18 12:05 ./group.awk
-rw-r-r- 1 үндэс үндэс 201 4 сарын 20 19:30 ./grade2.txt
-rwxrwxr-x 1 язгуур үндэс 1054 4 сарын 20 19:37 ./belts.awk

Сүүлийн хоёр цагийн дотор үүсгэсэн файлуудыг олох шаардлагатай ч яг хоёр цагийн өмнө үүсгэсэн файлтай харьцуулах зүйл байхгүй бол яах вэ? Ийм файл үүсгэ! Touch -t команд нь энэ зорилгоор зориулагдсан бөгөөд өгөгдсөн цагийн тэмдэг бүхий файлыг MMDChhmm (сар-өдөр-цаг-минут) форматаар үүсгэдэг. Жишээлбэл:

$ touch -t 05042140 dstamp
$ls -1 тамга
-rw-r-r- 1 dave админ 0 5 сарын 4 21:40 dstamp

Үр дүн нь үүсгэсэн огноо нь 5-р сарын 4, үүсгэх цаг -21:40 (үүнийг тооцвол) файл байх болно. Одоогийн цаг- 23:40). Та одоо сүүлийн хоёр цагийн дотор шинэчлэгдсэн бүх файлыг олохын тулд -newer сонголттой find командыг ашиглаж болно.

$ олох. -шинэ datamp -хэвлэх

2.1.8. Сонголт -төрөл

OS UNIXТэгээд Линуксдэмжлэг үзүүлэх Төрөл бүрийн төрөлфайлууд. Файл хайх зөв төрөлкомандыг ашиглан хийсэн бол -type сонголтоор олно. Жишээлбэл, лавлахаас бүх дэд санг олох /гэх мэтэнэ тушаалыг ашиглана уу:

$ олох / etc -type d -print

Лавлах бус бүх файлыг жагсаахын тулд дараах тушаалыг ажиллуулна уу:

$ олох. ! - төрөл d - хэвлэх

Лавлах дахь бүх симбол холбоосыг олоход зориулагдсан тушаалыг доор харуулав /гэх мэт.

$ find /etc -төрөл 1 -хэвлэх

2.1.9. Сонголт -хэмжээ

Хайлтын явцад файлын хэмжээг -size сонголтыг ашиглан тодорхойлно Н, Хаана Н- 512 байт блокоор файлын хэмжээ. Боломжит аргументууд дараахь утгатай байна. - заасан хэмжээнээс том хэмжээтэй файл хайх, - заасан хэмжээнээс бага, Н- өгөгдсөнтэй тэнцүү. Хэрэв аргумент нь тэмдгийг нэмж зааж өгсөн бол -тай, дараа нь хэмжээ нь блокоор биш, байтаар тодорхойлогдсон гэж үздэг бөгөөд хэрэв тэмдэгт байвал к- килобайтаар. Хэмжээ нь 1 МБ-аас хэтэрсэн файлуудыг хайхын тулд командыг ашиглана уу

$ олох. -aize -flOOOk -хэвлэх

Дараах тушаал нь лавлахаас хайдаг /home/apacheХэмжээ нь яг 100 байт файлууд:

$ find /home/apache -sixe 100s -print

Дараах тушаал нь 10 блок (5120 байт)-аас том файлуудыг хайх боломжийг танд олгоно.

$ олох. -хэмжээ +10 -хэвлэх

2.1.10. Сонголт Сонголт - гүн

-depth сонголт нь одоогийн лавлахын бүх файлыг (мөн түүний бүх дэд сангуудыг) эхлээд шалгаж, зөвхөн төгсгөлд нь лавлахын оруулгыг шалгах байдлаар хайлтыг зохион байгуулах боломжийг олгодог. Энэ сонголт нь cpio эсвэл tar командыг ашиглан соронзон хальс дээр архивлах файлуудын жагсаалтыг үүсгэхэд өргөн хэрэглэгддэг, учир нь энэ тохиолдолд лавлах зургийг эхлээд соронзон хальс дээр бичиж, зөвхөн дараа нь түүнд хандах эрхийг тохируулдаг. Энэ нь хэрэглэгч бичих зөвшөөрөлгүй сангуудыг архивлах боломжийг олгоно.
Дараах тушаал нь одоогийн директорийн бүх файл болон дэд сангуудыг жагсаав.

$ олох. -нэр "*" -хэвлэх -o -нэр ".*" -хэвлэх -гүн

Түүний ажлын үр дүн дараах байдалтай байна.

./.Xdefaults ./.bash_logout ./.bash_profile ./.bashrc ./.bash_nistory ./file ./Dir/file ./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 командыг үндсэндээ соронзон хальс руу файл бичих, уншихад ашигладаг. Ихэнхдээ үүнийг олох командтай хамт ашигладаг бөгөөд үүнээс файлуудын жагсаалтыг хоолойгоор дамжуулан хүлээн авдаг.

Лавлах агуулгыг соронзон хальсанд хэрхэн бичих талаар эндээс үзнэ үү /гэх мэт, /гэрТэгээд /програмууд:

$cd/
$ find etc home appa -depth -print | cpio -ov > dev/rmtO

Сонголт cpio команд нь соронзон хальс руу файл бичих горимыг зааж өгдөг. Сонголт -v (дэлгэрэнгүй- verbal mode) нь боловсруулж буй файл бүрийг мэдээлэх cpio командын заавар юм.

Лавлах нэрэнд тэргүүлэх '/' тэмдэгт байхгүй гэдгийг анхаарна уу. Ийм байдлаар архивлагдсан лавлахуудын харьцангуй замын нэрийг тогтоосон бөгөөд энэ нь дараа нь архиваас файлуудыг унших үед тэдгээрийг аль ч хэсэгт дахин үүсгэх боломжийг олгоно. үйлдлийн систем, зөвхөн үндсэн директорт биш.

2.1.13. Сонголтууд -exec ба -ok

Та оллоо гэж бодъё шаардлагатай файлуудмөн тэдэнтэй холбоотой тодорхой үйлдлүүдийг хийхийг хүсч байна. Энэ тохиолдолд танд -exec сонголт хэрэгтэй болно (зарим системүүд зөвхөн ls эсвэл ls -1 командуудыг -exec сонголтоор гүйцэтгэхийг зөвшөөрдөг). Олон хэрэглэгчид хуучин файлуудыг устгахын тулд -exec сонголтыг ашигладаг. Find команд нь устгахыг хүссэн файлаа олохын тулд rm-ийн оронд ls-г ажиллуулахыг зөвлөж байна.

-exec сонголтын дараа гүйцэтгэх командыг зааж өгсний дараа буржгар хаалт, зай, урвуу зураас, төгсгөлд нь цэг таслал тавина. Нэг жишээг харцгаая:

$ олох. -төрөл f -exec Xa -1 () ;
-rwxr-xr-x 10 үндсэн дугуй 1222 1993 оны 1-р сарын 4 ./sbin/C80
-rwxr-xr-x 10 үндсэн дугуй 1222 1993 оны 1-р сарын 4 ./sbin/Normal
-rwxr-xr-x 10 үндсэн дугуй 1222 1993 оны 1-р сарын 4 ./sbin/Rewid

Энэ нь ердийн файлуудыг хайж олох бөгөөд жагсаалт нь ls -1 командыг ашиглан дэлгэцэн дээр гарч ирнэ.

Лавлах дотор шинэчлэгдээгүй файлуудыг олохын тулд /логуудСүүлийн таван өдрийн дотор тэдгээрийг устгаад дараах тушаалыг ажиллуулна уу:

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

Та файлуудыг зөөх, устгахдаа болгоомжтой байх хэрэгтэй. -ok сонголтыг ашиглан mv болон rm командуудыг гүйцэтгэх боломжтой аюулгүйн горим(дараагийн файлыг боловсруулахаас өмнө баталгаажуулах хүсэлт гаргана). Дараах жишээн дээр find команд нь өргөтгөлтэй файлуудыг олдог .лог, хэрэв файл таваас дээш хоногийн өмнө үүсгэгдсэн бол устгах боловч эхлээд энэ үйлдлийг баталгаажуулахыг танаас хүсэх болно:

$ олох. -нэр "*.LOG" -mtime +5 -ok rm () ;
< rm … ./nets.LOG >? цагт

Файлыг устгахын тулд оруулна уу цагт, мөн энэ үйлдлээс урьдчилан сэргийлэхийн тулд - n.

2.1.14. Find командыг ашиглах нэмэлт жишээ

Find командыг ашиглах хэд хэдэн жишээг харцгаая. Эхлэх директор дээрх бүх файлыг хэрхэн олохыг доор харуулав.

$ олох ~ -хэвлэх

Битийг тохируулсан бүх файлыг олоорой SUID, дараах тушаалыг зөвшөөрдөг:

$ олох. -type 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 команд нь системд байгаа бүх файлуудын жагсаалтыг буцаадаг, xargs команд нь файл бүрийн төрлийг шалгаж файлын командыг ажиллуулдаг жишээг авч үзье.

$ find / -type f -print I xarge.file
/etc/protocols: Англи текст /etc/securetty: ASCII текст

Доорх нь echo командын нэрийг файлд оруулах dump файлуудыг хайж буй жишээг доор харуулав. /tmp/core.log.

$ олох / -нэр үндсэн -хэвлэх | xarge echo > /tmp/core.log

Дараах жишээнд лавлахад /apps/аудитбусад хэрэглэгчдийн бүрэн хандах эрхтэй бүх файлыг хайдаг. chmod тушаалтэдэнд бичих зөвшөөрлийг устгана:

$ find /appe/audit -perm -7 -хэвлэх | xarge chmod o-w

Жагсаалтыг тоймлох нь grep команд нь " гэсэн үг агуулсан файлуудыг хайдаг жишээ юм. төхөөрөмж«:

$ олох / -төрөл f -хэвлэх | xarge grep "төхөөрөмж"

2.3. Дүгнэлт

Find команд нь олон төрлийн шалгуурыг ашиглан төрөл бүрийн файлуудыг хайх маш сайн хэрэгсэл юм. -exec сонголт болон xargs командын ачаар олдсон файлуудыг бараг бүх системийн тушаалаар боловсруулж болно.

Хэрэв та байнга ажилладаг бол тушаалын мөрГрафик бүрхүүл байхгүй компьютер эсвэл сервер дээр эрт орой хэзээ нэгэн цагт файл хайх даалгавартай тулгарах болно. Аз болоход Линукс нь систем дээрх файлыг олох боломжийг олгодог суурилуулсан тушаалтай болсон.

Өнөөдөр бид find командыг ашиглах талаар ярих болно - надад итгээрэй, энэ хүчирхэг, тохиромжтой хэрэгсэлтэй хэрхэн ажиллах талаар сурах нь зүйтэй юм.

Find командыг хэрхэн ашиглах вэ

Энгийнээр хэлбэл, олох командын үндсэн синтакс нь дараах байдалтай байна.

/зам параметрийн файлын нэрийг ол

Багийн чадавхийг ойлгоцгооё

Файлыг нэрээр нь хайх

Эхний параметр бол зам юм. Хэрэв та файл хаана нуугдаж байгааг мэдэхгүй бол замыг / - гэж солино уу. Гэсэн хэдий ч дискийг бүхэлд нь хайхад нэлээд цаг хугацаа шаардагддаг бөгөөд хэрэв та файл хаана байрлаж болохыг мэдэж байвал хайлтаа эхлүүлэх хавтсыг зааж өгнө үү (жишээлбэл, хэрэглэгчийн нүүр хавтсанд хайхын тулд ~).

Одоо хайлтын параметрүүд рүү шилжье. Файлыг нэрээр нь хайх хоёр сонголт байдаг:

  • нэр - жижиг үсгийн мэдрэмжтэй файлын нэрийг хайх
  • iname - жижиг жижиг жижиг жижиг файлын нэрийг хайх

Линукс дээр файлын нэр чухал гэдгийг санах нь зүйтэй бөгөөд хэрэв та Ubuntu.txt файлыг олох шаардлагатай бол дараах тушаал ямар ч үр дүн өгөхгүй.

/ -нэр ubuntu.txt-г олоорой

Гэхдээ та iname командыг ашиглаж, жижиг үсгээр хайлт хийж болно:

/ -iname ubuntu.txt файлыг олоорой

Төрөлөөр хайх

Find команд нь зөвхөн файлаас илүү хайлт хийх боломжийг олгодог. Энд хайлтыг дэмждэг бариулуудын төрлүүд байна:

  • f - ердийн файл
  • d - лавлах
  • l - бэлгэдлийн холбоос
  • c - тэмдэгт төхөөрөмж
  • b - блок төхөөрөмж

Жишээлбэл, "config" -ээр эхэлсэн одоогийн хэрэглэгчийн гэрийн лавлах бүх санг олохын тулд дараах тушаалыг ажиллуулна уу:

~ -төрлийн d -нэрийн тохиргоог олох*

Хайлтын үр дүнг файлд гаргаж байна

Командын үр дүнг файл руу гаргах тохиромжтой функц нь хайлтын үр дүн олон байгаа эсвэл дараа нь тэдэнтэй ажиллах шаардлагатай бол маш ашигтай байх болно. Жишээлбэл, олдсон бүх зүйлийн жагсаалтыг хадгалахын тулд тохиргооны файлуудфайл болгох conf_search, дараах тушаалыг ажиллуулна уу:

/etc -type f -name “*.conf” > conf_search-ийг олоорой

Файлуудыг хэмжээгээр нь хайх

Энэ нь таны дискний зай дуусч байгаа бөгөөд хаашаа явсныг олж мэдэх шаардлагатай үед маш хэрэгтэй сонголт юм. Жишээлбэл, 1000 МБ-аас их хэмжээтэй файлуудыг олохын тулд дараах тушаалыг ажиллуулна уу:

Хай / -хэмжээ +1000M

Дараах хэмжээтэй товчлолуудыг ашиглаж болно.

  • c - байт
  • k - килобайт
  • M - мегабайт
  • G - гигабайт
  • b - 512 байт блокууд

Эдгээр нь хүчирхэг командыг ашиглах хэдхэн арга юм. Тушаалыг ажиллуулснаар гарын авлагаас илүү олон арга замыг олж болно