Учитывая time_t:
⚡ date -ur 1312603983
Sat 6 Aug 2011 04:13:03 UTC
Я ищу один
Что-то вроде
find . --newer 1312603983
Но с time_t вместо файла.
Учитывая time_t:
⚡ date -ur 1312603983
Sat 6 Aug 2011 04:13:03 UTC
Я ищу один
Что-то вроде
find . --newer 1312603983
Но с time_t вместо файла.
Это немного круто, потому что touch
не принимает значение raw time_t
, но оно должно сделать работу довольно безопасно в script. (Опция -r
для date
присутствует в MacOS X, я не проверял дважды GNU.) С помощью переменной "time" можно было бы заменить подстановку команд непосредственно в командной строке touch
.
time=$(date -r 1312603983 '+%Y%m%d%H%M.%S')
marker=/tmp/marker.$$
trap "rm -f $marker; exit 1" 0 1 2 3 13 15
touch -t $time $marker
find . -type f -newer $marker
rm -f $marker
trap 0
Вы можете найти каждый файл, который был создан/изменен в последний день, используйте этот пример:
find /directory -newermt $(date +%Y-%m-%d -d '1 day ago') -type f -print
для поиска всего на прошлой неделе, используйте "1 неделю назад" или "7 дней назад", все, что вы хотите
Возможно, кто-то сможет его использовать. Найти все файлы, которые были изменены в течение определенного периода времени рекурсивно, просто запустите:
find . -type f -newermt "2013-06-01" \! -newermt "2013-06-20"
Вы также можете сделать это без файла маркера.
Формат% s на сегодняшний день - секунды с эпохи. find -mmin flag принимает аргумент за минуты, поэтому разделите разницу в секундах на 60. И "-" перед возрастом означает поиск файлов, последняя модификация которых меньше возраста.
time=1312603983
now=$(date +'%s')
((age = (now - time) / 60))
find . -type f -mmin -$age
С более новыми версиями gnu find вы можете использовать -newermt, что делает его тривиальным.
Учитывая временную отметку unix (секунды с эпохи) 1494500000
, выполните:
find . -type f -newermt "$(date '+%Y-%m-%d %H:%M:%S' -d @1494500000)"
Чтобы grep эти файлы для "foo":
find . -type f -newermt "$(date '+%Y-%m-%d %H:%M:%S' -d @1494500000)" -exec grep -H 'foo' '{}' \;
Итак, есть другой способ (и он в некоторой степени переносится _
(python <<EOF
import fnmatch
import os
import os.path as path
import time
matches = []
def find(dirname=None, newerThan=3*24*3600, olderThan=None):
for root, dirnames, filenames in os.walk(dirname or '.'):
for filename in fnmatch.filter(filenames, '*'):
filepath = os.path.join(root, filename)
matches.append(path)
ts_now = time.time()
newer = ts_now - path.getmtime(filepath) < newerThan
older = ts_now - path.getmtime(filepath) > newerThan
if newerThan and newer or olderThan and older: print filepath
for dirname in dirnames:
if dirname not in ['.', '..']:
print 'dir:', dirname
find(dirname)
find('.')
EOF
) | xargs -I '{}' echo found file modified within 3 days '{}'