Запланировать задание cron на компьютере, который не включен постоянно?

find / -name 'dork*' ! -name '*.zip'

Необходимо использовать два -nameтеста. Один для сопоставления dork*и один для сопоставления *.zip. Второй из них следует инвертировать (на!)так, чтобы найденные имена не совпадали с ним. Между тестами всегда есть неявное И.

Делаем видимыми неявные И:

find / -name 'dork*' -a ! -name '*.zip'

Также используется не -стандартный синтаксис GNU:

find / -name 'dork*' -and -not -name '*.zip'

Чтобы игнорировать возникающие при этом ошибки, перенаправьте стандартный поток ошибок на /dev/nullс 2>/dev/nullв конце.

С помощью GNU findвместо этого вы можете не входить в каталоги, которые не доступны для чтения:

find / \( -type d -not -readable -prune \) -or \
       \( -name 'dork*' -not -name '*.zip' -print \)
0
30.10.2021, 17:46
1 ответ

Примерно так(не проверено)

#!/bin/bash
# run this via crontab on days 1-4 and @reboot
#
# Store the run_month here, or somewhere writable on disk not /tmp
runfile="$HOME/run_month"
# make sure $runfile exists, initalize to a non-month if 1st run ever 
[[ ! -f "$runfile" ]] && echo "init" >"$runfile"
#
# get the last month we ran
rf="$(cat "$runfile")"
# get the current month
cm="$(date "+%b")"
# if $rf is the same as $cm, quit
if [[ "$cm" = "$rf" ]] ; then
  exit
fi
# Remember we ran this month
echo "$cm" >"$runfile"
#
# Left  as an exercise for the student 
1
30.10.2021, 20:49

Теги

Похожие вопросы