El problema parece ser que de alguna manera instaló (o al menos convenció a dpkg de que está disponible )una versión más nueva del paquete locales
. El disponible en Stretch solo depende de libc-bin (>> 2.24)
, mientras que su salida muestra que su apt
ve una versión que depende de libc-bin (> 2.27)
(, podría decir que es inconsistente que dpkg
use >>
en dependencias y apt
produzca >
en casos como este, así es, significan lo mismo ).
El paquete locales
no es esencial, por lo que intentaría eliminarlo y luego volver a instalarlo, si tiene muchas configuraciones regionales compiladas, eso podría llevar un tiempo.
find /my/directory/here/ -type f -name '*.log' -mmin -480 -mmin +60 \
-exec grep -qi warning: {} \; \
-exec grep -qi error: {} \; \
-exec stat -c '%n|%y|%x|%s|%U|%u' {} +
То есть вам не нужен фактический вывод двух команд grep
, только статус выхода, поэтому мы используем -q
вместо -l
. Цикл while
не нужен. stat
может вызываться с несколькими файлами, поэтому мы используем -exec stat... {} +
. Я также процитировал шаблон *.log
, чтобы предотвратить его расширение до любого такого имени в текущем каталоге.
Связанные:
Другой способ сделать то же самое:
find /my/directory/here/ -type f -name '*.log' -mmin -480 -mmin +60 \
-exec sh -c '
for pathname do
if grep -qi warning: "$pathname" &&
grep -qi error: "$pathname"
then
stat -c "%n|%y|%x|%s|%U|%u" "$pathname"
fi
done' sh {} +
Здесь используется find
в качестве генератора пути для цикла for
, работающего в дочерней оболочке. Однако это вызовет stat
один раз для каждого файла, содержащего совпадения для обоих шаблонов, поэтому это немного менее эффективно.
GNU grep (1 )может выполнять рекурсивное сопоставление с образцом:
grep -R warning that-dir
проверяет все файлы в that-dir
.