Протестируйте дату файла с ударом

На самом деле QuickSort является O (n <глоток> 2 ). средний случай время выполнения является O (nlog (n)), но худший случай является O (n <глоток> 2 ), который происходит, когда Вы выполняете его в списке, который содержит немного уникальных объектов. Рандомизация берет O (n). Конечно, это не изменяет его худший случай, это просто препятствует тому, чтобы злонамеренный пользователь заставил Ваш вид занять много времени.

QuickSort более популярен потому что это:

  1. Существует (MergeSort требует, чтобы дополнительная память, линейная к числу элементов, была отсортирована).
  2. Имеет маленькую скрытую константу.
14
задан whoan 22 September 2015 в 11:12
поделиться

4 ответа

Вот лучший ответ, который я нашел на тот момент, но он касается только времени модификации:

expr `date +%s` - `stat -c %Y /home/user/my_file`
7
ответ дан 1 December 2019 в 09:01
поделиться

Если в вашей системе есть stat :

modsecs=$(stat --format '%Y' filename)

И вы можете выполнить вычисления, как в ответе Джоэла .

2
ответ дан 1 December 2019 в 09:01
поделиться

Боюсь, я не могу ответить на вопрос о времени создания, но для последнего времени модификации вы можете использовать следующее, чтобы получить дату эпохи , в ] секунд , так как имя файла было последнее изменение :

date --utc --reference=filename +%s

Таким образом, вы могли бы что-то вроде:

modsecs=$(date --utc --reference=filename +%s)
nowsecs=$(date +%s)
delta=$(($nowsecs-$modsecs))
echo "File $filename was modified $delta secs ago"

if [ $delta -lt 120 ]; then
  # do something
fi

и т. д.

Обновить Более простой способ сделать это (опять же, только измененное время): как мне проверить в bash, был ли файл создан более чем x раз назад?

20
ответ дан 1 December 2019 в 09:01
поделиться

вы можете использовать ls с --full-time

file1="file1"
file2="file2"
declare -a array
i=0
ls -go --full-time "$file1" "$file2" | { while read -r  a b c d time f
do    
  time=${time%.*}  
  IFS=":"
  set -- $time
  hr=$1;min=$2;sec=$3
  hr=$(( hr * 3600 ))
  min=$(( min * 60 ))  
  totalsecs=$(( hr+min+sec ))
  array[$i]=$totalsecs  
  i=$((i+1))
  unset IFS      
done
echo $(( ${array[0]}-${array[1]} ))
}  
1
ответ дан 1 December 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: