find . -type d ! -name . -mtime +31 -exec sh -c '
case $(find "$1" ! -mtime +31 -exec echo x \; -prune) in
"" ) rm -rf "$1" || echo "Error could not delete folder \"$1\"" ;;
esac
' {} {} \;
Из текущего каталога запускаем находим
и смотрим только каталоги
, которые не обновлялись с последних 31 дней. И в каждом из этих каталогов мы по очереди погружаемся и ищем все, что не старше 31 дня, и, найдя это, выводим фиктивный символ, а также обрезаем любой поиск вперед (в идеале мы должны просто завершить наш поиск здесь с помощью -quit
, но это не POSIX
, поэтому мы соглашаемся на -prune
).
Затем мы ищем результат этой операции find
и если он окажется пустым, мы знаем, что ни один элемент (файл/каталог/ссылка/и т.д.) не был новым и, следовательно, этот каталог . безопасен для удаления.
Полученная вами ошибка ( ошибка поиска символа: / usr / bin / bitgamecoind: undefined symbol: _ZN5boost15program_options11to_internalERKSs
) означает, что ваш исполняемый файл bitgamecoind
был связан динамически (и что ваш динамический компоновщик ld-2.19.so
) не смог найти этот символ ни в одной из библиотек, с которыми он был связан.
Это означает, что библиотеки на вашем диске не совсем соответствуют библиотекам, используемым для компиляции bitgamecoind
. Существует небольшое различие в сигнатуре двух методов (см. изменение имен в Википедии) из libboost_program_options.so
.
Из вывода ldd
я вижу, что динамический загрузчик использует настраиваемую разделяемую библиотеку /usr/local/lib/libboost_program_options.so.1.54.0
. Вместо этого вы должны использовать библиотеку, предоставленную Ubuntu ( /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.54.0
, которая не установлена).
Таким образом, решение вашей проблемы - установить библиотеку Boost v. 1.54 с пакетами Ubuntu:
# apt-get install libboost-program-options1.54.0
И вы должны сделать то же самое с другими разделяемыми библиотеками Boost в / usr / local / lib
.