изменение "sda5_crypt" crypttab согласно предложению ниже:
Замена OLD_NAME
с NEW_NAME
в /etc/crypttab
, и затем:
# dmsetup rename OLD_NAME NEW_NAME
# update-initramfs -c -t -k all
# update-grub
# reboot
Я бы сделал так:
find "$logfolder" \( -name '*.log' -o -name '*lst' \) -printf "%TB\t%TY\t%p\n" |
awk '$1==m && $2==y' m="$month" y="$year" | cut -f 3-
Сгруппировав в круглых скобках два вызова -имени
, вы можете объединить их с флагом -o
(или). Это заставит найти
файлы .log
или .lst
. Флаг -printf
(расширение GNU) печатает месяц модификации файла (%TB
), затем год его модификации (%TY
), а затем путь к нему (%p
), с закладкой (\t
) между каждым полем.
awk
просто проверяет, что 1-е поле (месяц) совпадает с $month
, а второе - с $year
.
Срезка cut
удаляет первые два поля (месяц и год) и печатает все из 3-го поля дальше.
Я проверил это, создав файлы, измененные в декабре 2012 года (и установил $month
на "December" и $year
на 2012 год):
$ touch -d "December 13 2012" {a,b,c}{.lst,.log}
$ touch c.lst a.log ## c.lst and a.log now have today's modification date.
$ find $logfolder \( -name '*.log' -o -name '*lst' \) -printf "%TB\t%TY\t%p\n" |
awk '$1==m && $2==y' m="$month" y="$year" | cut -f 3-
./b.log
./c.log
./b.lst
./a.lst
(обратите внимание, что предполагается, что имена файлов и каталогов не содержат символов новой строки).
.Попробуйте следующее:
find $logfolder -type f -exec stat --format='%y %n' "{}" + |
grep "$year-$month-"|
awk -F' ' '{print $4}'|
grep 'log$\|lst$' > $archivepath/filesToArchive
Для забавной возможности, если ваш найдет
ручки -newerXY
, используйте его! Например, чтобы получить файлы с 1977 года и октября:
find "$logfolder" \( -name '*.log' -o -name '*.lst' \) -newermt "1977-10-01" \! -newermt "1977-10-01 +1 month"
Готово!
Так как у вас уже есть переменные год
и месяц
, то просто записать как:
find "$logfolder" \( -name '*.log' -o -name '*.lst' \) -newermt "$year-$month-01" \! -newermt "$year-$month-01 +1 month"
Только одну найти
команду! Удивительно!