Исходный код Coreutils находится здесь:https://github.com/coreutils/coreutils/blob/master/src/uptime.c
Как видите, именно так, как решили напечатать авторы, пробел перед текущим временем, два пробела после безотказной работы, ни одного вокруг подключенных пользователей и два пробела перед средней нагрузкой:
fprintftime (stdout, _(" %H:%M:%S "), tmn, 0, 0);
printf (_("up %2d:%02d, "), uphours, upmins);
printf (ngettext ("%lu user", "%lu users", select_plural (entries)),
printf (_(", load average: %.2f"), avg[0]);
find www -mindepth 1 -maxdepth 1 -exec rm -r -- {} +
Если .gitkeep
находится в каталоге www
, вы можете сделать это:
find www -mindepth 1 -maxdepth 1 ! -name.gitkeep -exec rm -r -- {} +
С POSIXfind
:
find www -path 'www/[!.]*' -prune -exec rm -r -- {} +
По замыслу find не завершается ошибкой, если аргумент не указан. См. пример 8 в спецификации , который поясняет это.
Значение опций:
-path
указывает, что мы ищем только пути, которые начинаются с www/
и не имеют точки сразу после (, поэтому он исключает скрытые файлы из списка удаления ).
-prune
предотвращает попытки find спуститься в каталоги, (которые вы уже используете rm -r
, что делает это ).
--
в rm -r -- {} +
позволяет обрабатывать найденные файлы, даже если они начинаются с дефиса.
Есть простой способ в чистый bash(только встроенный):
Даже если вы используете
set -e
чтобы остановить скрипт при ненулевой ошибке выхода, вы можете сделать:
shopt -s nullglob # don't treat * literally
shopt -u dotglob # don't match.dotfiles
rm -rf www/* 2>/dev/null || true
# < hide err>< >
# only if set -e