Bash / find команд

find команд

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

Үндсэн хэрэглээ

bash
# find [хаана хайх] [юу хайх]
# Одоогийн директороос бүх файлыг жагсаах
find .

# Тодорхой директороос хайх
find /home/user/documents

# Нэрээр хайх (-name)
find . -name "readme.txt"

# Wildcard ашиглан хайх
find . -name "*.log"
find . -name "*.sh"

# Том/жижиг үсгийг ялгахгүй хайх (-iname)
find . -iname "readme.txt"
# README.txt, Readme.txt, readme.txt бүгдийг олно

Төрлөөр хайх

bash
# Зөвхөн файл хайх (-type f)
find . -type f -name "*.txt"

# Зөвхөн директор хайх (-type d)
find . -type d -name "logs"

# Symbolic link хайх (-type l)
find . -type l

# Хэд хэдэн нөхцөл нэгтгэх
find /var -type f -name "*.log"

Хэмжээгээр хайх

bash
# 1MB-с их файлуудыг олох
find . -size +1M

# 100KB-с бага файлуудыг олох
find . -size -100k

# Яг 50KB файлуудыг олох
find . -size 50k

# Хэмжээний нэгжүүд:
# c — байт
# k — килобайт
# M — мегабайт
# G — гигабайт

# 100MB-с их файлуудыг олж, нэр ба хэмжээг харуулах
find / -type f -size +100M -exec ls -lh {} \;

Огноогоор хайх

bash
# Сүүлийн 7 хоногт өөрчлөгдсөн файлууд
find . -mtime -7

# Яг 30 хоногийн өмнө өөрчлөгдсөн файлууд
find . -mtime 30

# 30 хоногоос өмнө өөрчлөгдсөн файлууд
find . -mtime +30

# Сүүлийн 1 цагт өөрчлөгдсөн файлууд (-mmin минутаар)
find . -mmin -60

Олдсон файлтай ажиллах (-exec)

-exec тугтай олдсон файл бүрт команд ажиллуулж болно. {} нь олдсон файлын нэрийг, \; нь командын төгсгөлийг тэмдэглэнэ:

bash
# Олдсон бүх .log файлыг устгах
find . -name "*.log" -exec rm {} \;

# Олдсон файлуудын дэлгэрэнгүй мэдээлэл харуулах
find . -name "*.sh" -exec ls -lh {} \;

# Олдсон файлуудад гүйцэтгэх эрх олгох
find . -name "*.sh" -exec chmod +x {} \;

# Олдсон файлуудад grep ажиллуулах
find . -name "*.txt" -exec grep -l "алдаа" {} \;

Практик жишээ

bash
#!/bin/bash

# Системийн 100MB-с том файлуудыг олж тайлан гаргах
echo "=== Том файлуудын тайлан ==="
echo "Хайж байна..."

find / -type f -size +100M 2>/dev/null | while read file; do
  size=$(du -sh "$file" | cut -f1)
  echo "$size  $file"
done | sort -rh

echo "=== Дууслаа ==="
bash
# 30 хоногоос хуучин .log файлуудыг цэвэрлэх
find /var/log -name "*.log" -mtime +30 -exec rm {} \;
echo "Хуучин лог файлууд устгагдлаа"

# Хоосон файлуудыг олж устгах
find . -type f -empty -delete

# Хоосон директоруудыг олж устгах
find . -type d -empty -delete

-delete тугтай файлыг шууд устгаж болно — -exec rm {} \;-с хурдан боловч болгоомжтой хэрэглэ.

Дараагийн хичээлд:

Файлын эрх — chmod ба chown командуудыг судална. Linux-д файл бүр хэн уншиж, бичиж, ажиллуулах эрхтэй болохыг тодорхойлсон эрхийн систем байдаг.