Поиск файлов в подкаталогах, созданных после определенной даты - PullRequest
0 голосов
/ 01 февраля 2012

Я нахожусь в процессе написания bash-скрипта (просто изучаю его), который должен найти файлы в подкаталогах, созданных после определенной даты.У меня есть папка /images/ с jpegs в различных подпапках - я хочу найти все jpegs, загруженные в этот каталог (или любые подкаталоги) после определенной даты.Я знаю о флаге -mtime, но моя дата «последнего импорта» хранится в формате %Y-%m-%d, и было бы неплохо использовать это, если это возможно?

Кроме того, каждый файл / путь будетиспользуется для генерации запроса MySQL SELECT.Я знаю, что найти, как правило, выводит имена найденных файлов, построчно.Но если find на самом деле не та команда, которую я должен использовать, было бы неплохо иметь аналогичный формат вывода, который я мог бы использовать для генерации запроса SELECT (WHERE image.file_name IN (...))

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Попробуйте приведенный ниже скрипт:

DATE=<<date>>
SEARCH_PATH=/images/
DATE=`echo $DATE|sed 's/-//g'`
DATE=$DATE"0000"
FILE=~/timecheck_${RANDOM}_$(date +"%Y%m%d%H%M")
touch -t $DATE $FILE
find $SEARCH_PATH -newer $FILE 2>/dev/null|awk 'BEGIN{f=0}{if(f==1)printf("\"%s\", ",l);l=$0;f=1}END{printf("\"%s\"",l)}'
rm -f $FILE
1 голос
/ 01 февраля 2012

Вы можете преобразовать свою дату в формат «последних X дней», которого ожидает find -mtime.

find - правильная команда для этой задачи.Отправьте свои выходные данные куда-нибудь, а затем проанализируйте файл в запросе.

Остерегайтесь атак с использованием SQL-инъекций, если файлы были загружены пользователями.Остерегайтесь цитирования специальных символов, даже если это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...