Фрагменты кода программы
#!/bin/sh
#ifdef __USAGE
#Created by Ilya Grishin
#May 22, 2022
#SYNTAX: sh [path]
#endif
SEARCH_COUNT=100
COUNTER=0
FILE_FORMAT=.txt
REWRITE_FILE=НЕТ
echo 'Раньше какой даты искать файлы?'
read -p 'Введите год: ' y
read -p 'Введите месяц: ' m
read -p 'Введите день: ' d
# Переменные для теста
# y=2022; m=05; d=21;
if test -z $y || test -z $m || test -z $d; then
echo 'Exit error'
exit 1
fi
read -p 'Назовите файл или нажмите <Enter>: ' fileName
if test -z $fileName; then
fileName='FIND'
echo "Задано название FIND$FILE_FORMAT"
fi
if test -f "$PWD/$fileName$FILE_FORMAT"; then
read -p 'Файл существует. Перезаписать? (ДА <Enter> / НЕТ): ' REWRITE_FILE
if test -z $REWRITE_FILE; then
REWRITE_FILE='ДА'
fi
if [[ $REWRITE_FILE == 'ДА' ]]; then
echo > "$PWD/$fileName$FILE_FORMAT"
fi
fi
resultSearch() {
while read -d '' -r dir;
do
COUNTER=$(( $COUNTER + 1 ))
files=("$dir"/*)
echo "$COUNTER. $dir" >> "$PWD/$fileName$FILE_FORMAT"
# Остановить если найдено 100 файлов
if [[ COUNTER -eq SEARCH_COUNT ]]; then
echo "Результаты поиска: найдено $COUNTER файлов." >> "$PWD/$fileName$FILE_FORMAT"
break;
fi
done
if [[ COUNTER -gt 1 ]]; then
echo "Результаты поиска записаны в файл $fileName$FILE_FORMAT"
fi
# Оповестить, если файлов нет
if [[ COUNTER -eq 0 ]]; then
echo 'Файлов нет в директории'
fi
}
find ~/Downloads 2>/dev/null ! -newermt "$y-$m-$d 00:00:00" -print0 | "resultSearch";
Скриншоты выполняемой программы
Рисунок 1. Код вызова сценария из Терминала.
Рисунок 2. Начало выведенного содержимого файла FIND.TXT
Рисунок 3. Конец выведенного содержимого файла FIND.TXT
Заключение
В ходе выполнения данной курсовой работы был написан алгоритм программы сценария, выполняющий поиск файлов, созданных не позднее указанной даты.
Программа имеет USAGE-комментарий, умеет подсчитывать число найденных файлов, а в результате выводит полный путь до файла. Программа закончит свой поиск после 100 найденных файлов. Имя и дата вводятся пользователем с консоли.
Список использованных источников
How to Find Files with Dozens of Criteria with the Bash Find Command // ATA Learning. Режим доступа: https://adamtheautomator.com/bash-find/
Resource – QNX Commands // Real-Time Teaching Labs. Режим доступа: http://users.encs.concordia.ca/home/r/realtime/resource/QNX_Commands.html
Using the Command Line // QNX. Режим доступа: http://www.qnx.net/developers/docs/6.3.0SP3/neutrino/user_guide/cmdline.html
Приложение. Таблица аналогичных команд qnx для mac os.
QNX команды |
Описание |
Unix команды |
use |
Вывести сообщение |
man |
pwd |
Определить текущую директорию |
where |
cd |
Сменить директорию |
cd |
cp |
Копировать файлы и иерархию файла |
cp |
ls |
Показать содержимое директории |
ls |
mv |
Переименовать или переместить файлы и директории |
mv |
rm |
Удалить или очистить файлы |
rm |
id |
Определить пользователя |
who |
ssh |
Подключиться по SSH |
ssh |
telnet |
Интерфейс протокола Telnet |
telnet |
which |
Определить исходную директорию программы |
which |
grep |
Поиск строковых паттерн |
grep |
find |
Поиск файлов по критериям |
find |
mkdir |
Создать директорию |
mkdir |
rmdir |
Удалить директорию |
rmdir |
cat |
Объединить и показать файлы |
cat |
vi |
Редактор файлов интерфейса VIM |
vi |
less or more |
Постраничное отображение содержимого файла |
less or more |
chmod |
Редактирование доступов файла |
chmod |
ln |
Создание ссылки на файл |
ln |
tar |
Архивирование |
tar |
kill |
Принудительное завершение процесса |
kill |
ps |
Просмотр текущих запущенных процессов |
ps |