Обычно в Linux нет .exe
файлов; расширение .exe
— артефакт времен DOS. Самый распространенный способ узнать, где находится исполняемый файл, который я видел, — запустить which
с именем команды, поэтому в данном случае это будет which nmap
.
В большинстве систем семейства Red Hat результатом будет:
# which nmap
/usr/bin/nmap
Чтобы подсчитать точное количество ошибок, которые rm
производит:
find "$CDIR" -depth -mtime +7 -exec sh -c '
for pathname do
if ! rm -rfv "$pathname"; then
count=$(( count + 1 ))
fi
done
printf "This batch caused %d errors in rm\n" "$count"' sh {} +
Это выполнит глубокий -первый поиск в $CDIR
и его подкаталогах -и удалит любой файл или каталог с отметкой времени модификации более недели назад. Сценарий оболочки в строке -будет вызываться для пакетов найденных путей, и он выполняет итерацию по каждому, пытаясь удалить его с помощью rm
. Если удаление не удалось, оно засчитывается. В конце сценария строки -сообщается количество сбоев для этой партии.
Обратите внимание, что это очень небезопасный способ очистки, так как вся структура каталогов с корнем $CDIR
будет удалена, если ни один файл или каталог в самом $CDIR
не был добавлен или удален в течение нескольких недель. время . Та же проблема верна для каждого подкаталога $CDIR
.
Вместо этого вы можете удалить только старые файлы , а затем удалить пустые каталоги по отдельности:
find "$CDIR" ! -type d -mtime +7 -exec sh -c '
for pathname do
if ! rm -fv "$pathname"; then
count=$(( count + 1 ))
fi
done
printf "%d files in this batch could not be deleted\n" "$count"' sh {} +
find "$CDIR" -type d -empty -delete
(Это предполагает, что у вас есть реализация find
, которая поддерживает -empty
и -delete
, и что вы согласны с удалением пустых каталогов, даже если они не были очищены первой командой find
)
Как всегда, при тестировании команд, выполняющих подобные очистки, запускайте копии данных и сохраняйте резервную копию данных.
Другой (более простой )подход заключается в простом удалении старых файлов, а затем подсчете количества старых вещей, которые все еще существуют. Это число будет равно количеству раз rm
сбоев (, хотя я использую здесь -delete
для краткости ):
find "$CDIR" ! -type d -mtime +7 -delete
find "$CDIR" ! -type d -mtime +7 -exec echo x \; | wc -l
Затем вы также можете очистить пустые каталоги, как описано выше.