Просто понятый это при рытье через переменные среды, я также должен установить $XAUTHORITY
к чему переменная находится в нормальном входе в систему.
XAUTHORITY=/home/myusername/.Xauthority DISPLAY=:0.0 notify-send --urgency=low -i python "The job has finished"
-тип f
найдет только файлы, а не каталоги. -maxdepth 0
найдет только тот каталог, в котором вы ищете (.
). Вы должны найти файлы, которые на самом деле хотите передать в rm
.
Стандартный способ сделать это - исключить каталоги и все их содержимое вот так (непроверено!):
find . -mindepth 1 \( -name '*log*' -o -name 'crash-reports' -o -name 'world*' \) -prune -o -print
То, что вы хотите, невозможно IMHO с одним запуском найти
, если вы не знаете, что все каталоги, которые нужно пропустить, находятся на первом уровне каталога.
первый шаг
В первом запуске удалите все файлы (а точнее: не-директорий):
find . \( -type d \
\( -name '*log*' -o -name 'world*' -o -name 'crash-reports' -o -name 'banned-ips*' \) \
-prune \) -o \( -type d -o -print \)
второй шаг
Создайте фиктивный файл в каждой (sub)директории, который нужно пропустить:
find . -type d \( \
\( -name '*log*' -o -name 'world*' -o -name 'crash-reports' -o -name 'banned-ips*' \) \
-o \( -path '*/*log*/*' -o -path '*/world*/*' -o -path '*/crash-reports/*' -o -path '*/banned-ips*/*' \) \) \
-exec touch {}/dontdeletethisdirecory
третий шаг
Теперь все пустые директории могут быть удалены. Простой подход заключается в передаче всех каталогов в rmdir
. Только пустые каталоги удаляются:
find . -depth -type d -exec rmdir {} \;
опционально на последнем шаге
Теперь вы можете удалить фиктивные файлы:
find . -type -f -name dontdeletethisdirecory -delete