Решение задания 1: find
1. .log файлы в /var/log
find /var/log -name "*.log"
2. Обычные файлы в /tmp
find /tmp -type f
-type f означает только обычные файлы (не директории, не символические ссылки).
3. Файлы > 1МБ, изменённые за 7 дней
find /home -type f -size +1M -mtime -7
Комбинация критериев: -size +1M (больше 1 МБ) и -mtime -7 (изменены менее 7 дней назад).
4. .txt файлы без вывода ошибок
find . -name "*.txt" 2>/dev/null
2>/dev/null перенаправляет сообщения об ошибках (отказ в доступе и т.д.) в никуда.
5. Копирование найденных файлов
mkdir -p /tmp/backup
find /root/ -type f -name "*.txt" -exec cp {} /tmp/backup \;
Сначала создаём целевую директорию, затем копируем каждый найденный файл.
Решение задания 2: locate
1. Обновить базу
sudo updatedb
2. Найти passwd
locate passwd
Быстро найдёт все файлы и пути, содержащие слово "passwd".
3. Найти .conf файлы
locate *.conf
4. Поиск .txt в /etc с -r
locate -r '/etc/*\.txt$'
Регулярное выражение: /etc/ — начинается с этого пути; *\.txt$ — заканчивается на .txt.
Решение задания 3: цикл for
1. Числа 1..10
for i in {1..10}
do
echo "Number: $i"
done
Или в одну строку: for i in {1..10}; do echo "Number: $i"; done
2. Строка "Iteration: N"
for i in {1..10}; do echo "Iteration: $i"; done
3. Список .txt файлов
for FILE in *.txt
do
echo "Found: $FILE"
done
Если .txt файлов нет, переменная $FILE будет содержать литерал *.txt.
Решение задания 4: цикл while
1. Числа 1..5
counter=1
while [ $counter -le 5 ]
do
echo "Counter: $counter"
((counter++))
done
2. Бесконечный цикл, 2 секунды
while true; do echo "Alive" && sleep 2; done
Остановить: Ctrl+C
Решение задания 5: разбор скрипта из лекции
-
Что в переменной DATE?
Текущая дата в формате "день-месяц-год", например22-11-24. Синтаксис `` `date '+%d-%m-%y'` `` — старый способ подстановки вывода команды (эквивалент$(date '+%d-%m-%y')). -
Что делает первый for?
Создаёт 5 файловFile-1.txt...File-5.txt. В каждый записывает текущее время в форматечас-минута-секунда(перенаправление> File-$i.txt). -
Зачем sleep 5?
Чтобы между созданиями файлов проходило 5 секунд и время в файлах различалось — иначе все файлы получат одинаковое время. -
Что делает второй for?
Перебирает все файлы в директории$DATEи выводит их содержимое черезcat. -
Зачем mkdir -p?
Флаг-pне выдаёт ошибку, если директория уже существует. Без этого флага повторный запуск скрипта завершится с ошибкой "mkdir: cannot create directory: File exists".