Хотел бы добавить комментарий к сообщению @Steve Kehlet, но потребуется 50 повторений (RIP).
Для всех, кто нашел этот пост через многочисленные поисковые запросы, я нашел способ не только найти определенные файлы с заданным временным диапазоном, но и НЕ включать относительные пути ИЛИ пробелы, которые могут вызвать ошибки tarring. (БОЛЬШОЕ СПАСИБО СТИВ.)
find . -name "*.pdf" -type f -mtime 0 -printf "%f\0" | tar -czvf /dir/zip.tar.gz --null -T -
.
относительный каталог
-name "*.pdf"
ищите PDF-файлы (или файлы любого типа)
-type f
тип для поиска - это файл
-mtime 0
искать файлы, созданные за последние 24 часа
-printf "%f\0"
Обычное -print0
ИЛИ -printf "%f"
у меня НЕ сработало. Со страниц руководства:
Это цитирование выполняется так же, как и для GNU ls. Это не тот же механизм цитирования, который используется для -ls и -fls. Если вы можете решить, какой формат использовать для вывода find, то обычно лучше использовать '\ 0' в качестве символа конца строки, чем использовать новую строку, поскольку имена файлов могут содержать пробелы и символы новой строки.
-czvf
создать архив, отфильтровать архив через gzip, подробно перечислить обработанные файлы, имя архива
Изменить 2019-08-14: я хотел бы добавить, что я также мог использовать ту же команду в своем комментарии, просто используя сам tar:
tar -czvf /archiveDir/test.tar.gz --newer-mtime=0 --ignore-failed-read *.pdf
Требуется --ignore-failed-read
на случай, если на сегодня не будет новых PDF-файлов.
find ... | xargs ...
заключается в использовании -print0 / -0 параметра на каждом:find -print0 ... | xargs -0 ...
. Это приведет к тому, что имена файлов будут разделены нулевым символом, что означает, что в ваших именах файлов могут быть пробелы, новые строки или другие странные вещи, и это все равно будет работать.