С gnu
вы можете попробовать:
find "$(pwd)" -mindepth 2 -maxdepth 2 -type d -printf "d%h\0%T@ %p\0" | awk -v RS="\0" '
/^d/ {directoryname=substr($0,2)}
/^[0-9]/ && (!lmtimes[directoryname] || lmtimes[directoryname] < $1) {
lmtimes[directoryname]=$1;
lmtimedns[directoryname]=substr($0,index($0," ")+1);
}
END {for (directoryname in lmtimedns) print lmtimedns[directoryname]}
'
Эта версия была протестирована против странных имен, содержащих специальные символы: \n
"
etc.
$(pwd)
выполнить команду pwd
, которая выводит абсолютное имя текущего каталога.
find $(pwd)
поиск по текущему каталогу, будут выведены полные пути каталогов
Фильтр -mindepth 2 -maxdepth 2 -type d
выбирает только каталоги второго уровня, где FOLDER
в текущем каталоге находятся на уровне 1, а их SUB_FOLDER
на уровне 2.
-printf "d%h\0%T@ %p\0"
печатает для каждого SUBFOLDER
, найденного, эту информацию:
d
FOLDER
\0
last modif time in second since EPOCH
[space]
SUBFOLDER
\0
etc.
\0
не может быть частью имени, поэтому это идеальный разделитель.
awk -v RS="\0"
рассматривает \0
как разделитель записей.
/^d/ {directoryname=substr($0,2)}
: этот regex
верен, когда запись начинается с d
; directoryname
переменная обновляется именем FOLDER
, которое состоит из всех символов сразу после d
, по конструкции, благодаря printf
.
/^[0-9]/
: этот regex
верен, когда запись начинается с цифры. По конструкции, благодаря printf
, первое поле ($1
: например, все символы до ̀[пробел]
символа) текущей записи содержит время последнего изменения.
&& (!lmtimes[directoryname] || lmtimes[directoryname] < $1)
: lmtimes - это ассоциативный массив (карта пар [ключ, значение]). Он используется для хранения самого нового времени последней модификации текущего SUBFOLDER
для текущего FOLDER
(directoryname
). Выражение будет true
, если для directoryname
еще не сохранено время последнего изменения или если уже сохраненное время последнего изменения старше, чем время из текущего SUBFOLDER
.
Если последнее выражение истинно, и время последнего изменения, и имя FOLDER
сохраняются с помощью ключа directoryname
в lmtimes и lmtimedns, соответственно.
END {for (...
: Когда все записи были разобраны, выводится каждое имя SUBFOLDER
с самым новым временем последнего изменения.
Для истории команда для вывода списка имен файлов с последним временем модификации для каждого каталога:
find "$(pwd)" -depth -type f -printf "d%h\0%T@ %p\0" | awk -v RS="\0" '
/^d/ {
directoryname=substr($0,2);
}
/^[0-9]/ {
if (!lmtimes[directoryname] || lmtimes[directoryname] < $1) {
lmtimes[directoryname]=$1;
lmtimefns[directoryname]=substr($0,index($0," ")+1);
}
}
END {
for (directoryname in lmtimefns) {
print lmtimefns[directoryname];
}
}'
Сначала я задал этот вопрос на форуме Linux Mint, где mr_raiderпредоставил решение. Все заслуги принадлежат ему.
Проблема была вызвана драйверами AMD по умолчанию. Решение заключается в установке обновленной версии драйверов oibaf AMD. Порядок действий:
sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update
sudo apt upgrade
После этого и перезагрузки лагов больше нет.
Тема форума доступна здесь:
[РЕШЕНО] Cinnamon тормозит, вызывая всплески производительности процессора каждую секунду
У меня также была эта проблема после обновления до Mint 18.3
У меня NVidia, и я пытался обновить свои драйверы, но это не помогло. Для меня это был новый драйвер (в моем случае 340.106 ), который был проблемой.
После того, как я вернулся к 340.104, все снова стало замечательно.
Я просто хотел опубликовать сообщение, если у кого-то еще нет такой же проблемы.
Спасибо
Вы также можете попробовать выйти и снова войти в систему с отключенным программным рендерингом.