summaryrefslogtreecommitdiff
path: root/LINUX/FIND.md
blob: 8ae6c1775cb4492f778a400a4f4bb0c145e86842 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
```sh
find . # find ..

find /var/log | less

# ищем файлы по маске:
find . -name "*.json"
find . -name "f*.json"

# ищем файлы по маске только с 1 уровнем вложенности:
find . -maxdepth 1 -name "*.json"

# ищем только файлы:
find . -type f -name "*first*"

# ищем только папки:
find . -type d -nameo "*first*"

# ищем файл с исключением папки:
find . -type d -path ./<folderName> -prune -o -name "*.json" - print

find . -type d -name "*<folderName*"> -prune -o -name "*.json" - print

# поиск без учета регистра:
find . -iname "*.JSoN"

# поиск файлов которые были изменены ДО:
find . -type f -atime 0 # =0= суток

#  или ПОСЛЕ:
find . -type f -mtime 0 # =0= суток

# найти файлы доступ к которому был позднее чем:
find . -type f -anewer <fileName>

# найти файлы измененные позднее чем:
find . -type f -cnewer <fileName>

# ищем файлы размером:
find . -type f -size 140M

# ищем файлы размером больше чем:
find . -type f -size +140M

# ищем файлы размером меньше чем:
find . -type f -size -140M

# ищем файлы размером между:
find . -type f -size -140M -a -type f -size +120M

# отображаем размер файлов с сортировкой по размеру:
find . -type f -exec du -sh {} \; | sort -h | tail -3 # или | head -3

# вывести содержимое всех файлов:
find . -type f -exec {} \;

# вывести содержимое всех файлов с разделением:
find . -type f -exec ls -la {} \; -exec cat {} \; -exec echo "" \;
```
=======================================
💡 Архивируйте и удаляйте логи старше 7 дней с помощью этой команды:

`find /var/log -type f -mtime +7 -exec tar -rvf old_logs.tar {} \; -exec rm {} \;

🌟 Вы также можете запланировать это в cron, чтобы автоматизировать очистку!

=======================================
⚙️ **Поиск последних измененных файлов в Linux**

Когда нужно найти недавно измененные файлы, например, для отладки или мониторинга активности, можно использовать команду find.

**📌 Поиск файлов по времени изменения**

**🟢 Найти файлы, измененные за последние 24 часа:**

find /path/to/dir -type f -mtime -1

Выведет файлы, измененные за последние сутки.

**🟢 Найти файлы, измененные за последние 10 минут:**

find /var/log -type f -mmin -10

Полезно для отслеживания активных логов.

**🟢 Вывести 10 последних измененных файлов:**

ls -lt | head -10

Сортирует файлы по времени изменения и показывает 10 самых свежих.

🗣 **Эти команды помогают быстро находить файлы, с которыми недавно работали, а также анализировать активность в системе.**

=======================================
⚙️ **Поиск и удаление пустых файлов и папок в Linux**

Со временем в системе накапливаются пустые файлы и каталоги, занимая место и создавая беспорядок. Эти команды помогут быстро их найти и удалить.

**📌 Поиск и очистка пустых файлов и папок**

**🟢 Найти все пустые файлы в каталоге:**

find /path/to/dir -type f -empty

Выведет список всех пустых файлов в указанной директории.


**🟢 Удалить все пустые файлы:**

find /path/to/dir -type f -empty -delete

Автоматически удалит все найденные пустые файлы.


**🟢 Найти все пустые папки:**

find /path/to/dir -type d -empty

Выведет список пустых каталогов.


**🟢 Удалить пустые папки:**

find /path/to/dir -type d -empty -delete

Очищает систему от ненужных пустых директорий.

➡️ **Автоматическая проверка битых символических ссылок в Linux**
```sh
#!/bin/bash

# Целевая директория
TARGET_DIR="$HOME"

# Поиск и удаление битых симлинков
find "$TARGET_DIR" -xtype l -print -delete

echo "✅ Все битые символические ссылки удалены из $TARGET_DIR"
```
🟢 Использует find с флагом -xtype l для поиска битых ссылок
🟢 Удаляет только символические ссылки, указывающие на несуществующие файлы.

➡️ **Можно добавить в crontab для автоматической очистки раз в месяц:**
`0 5 1 * * /path/to/script.sh

🗣 **Эти команды помогают поддерживать порядок в системе и освобождать место на диске.**

#=========================
🖥 Команда **find** очень мощная, но многие пользователи не осознают, насколько гибкой может быть опция -exec!

🌟 Так можно найти и удалить все файлы .log, которым больше 7 дней:
`find /path/to/logs -type f -name "*.log" -mtime +7 -exec rm {} \;

🌟 А вот так найти и сжать все файлы .txt:
`find /path/to/files -type f -name "*.txt" -exec gzip {} \;