Если у вас могут быть имена файлов с символами новой строки в них(touch /the/path/$'foo\nbar'
для создания примера ), вы можете избежать некоторой путаницы, используя функцию GNU find -fprintf
для печати имен файлов в один файл журнала и точку для каждого имени файла. в отдельный лог-файл. Тогда количество байтов в точечном файле будет равно количеству совпадающих файлов, а сами имена файлов будут в отдельном файле.
find "$backup_path"/"$HOSTNAME".*.img -mtime +"$retention_days" -type f \
-fprintf./deleted-files '%p\n' \
-fprintf./count-files '.' \
-delete
Выше я специально поместил два оператора -fprintf
после предыдущих критериев фильтрации -mtime
и -type f
и непосредственно перед -delete
, чтобы они срабатывали только тогда, когда -delete
должен быть.
Первый новый оператор печатает пути к файлу ./deleted-files
; второй печатает точку на ./count-files
. Вы можете просмотреть журнал удаленных файлов -для поиска имен удаленных файлов и использовать wc -c < count-files
для отчета об общем количестве удаленных файлов. Имена файлов перезаписываются -fprintf
при каждом запуске.
Многие проблемы с доступом к устройствам можно решить, изменив членство в группе.
В частности, если ls -l
показывает, что групповые разрешения (вторым " rwx
" триплетом )является " rw
" (например, "-rw-rw----
" ), то, добавляя себя группе, владеющей устройством, предоставит rw
доступ.
Вот как:
device="/dev/video0"
sudo adduser $USER $(stat -c "%G" $device)
Это позволяет вам стать членом группы, которая может rw
использовать устройство, но есть еще один шаг.
Чтобы сделать все ваши процессы членами новой группы,выйти и войти. Членство в группах устанавливается во время login
.
Вы можете проверить свои текущие группы с помощью id
. Прочтите man id
.
Создать один процесс в новой группе (для тестирования перед выходом/входом в систему):
newgrp $(stat -c "%G" $device)
или просто введите имя группы. См. man newgrp
.