Хочу найти все файлы, исключая те, которые относятся к последним числам месяца. К таким относятся файлы 2 и 4 в списке (в обоих месяцах 30 дней в году.)
Вот так вот ищет отдельно всё, кроме ноября: find /mnt/zd-backup ! -name "30.11*"
01.01.2018.7z
02.02.2018.7z
30.04.2018.7z
а так, всё кроме апреля: find /mnt/zd-backup ! -name "30.04*"
01.01.2018.7z
30.11.2018.7z
02.02.2018.7z
Но как мне объедить такой поиск в одну строку? Ведь месяцев c 30 днями 4 шт. в году.
Пробовал вот так, но не дало результата: find /mnt/zd-backup ! -name "30.(04|11)*"
Евгений, так я вроде написал для вашего случая.
не работает?
в поиск должны (по идее) попадать файлы с маской "НольЛюбаяЦифраТочкаНесколькоЦифрТочкаНесколькоЦифрТочка7z"
Nick Sdk, хм. Определенный вывод файлов теперь есть, но среди них нет ни
/mnt/zd-backup/2018/30.04.2018-22-00-01.7z ни
/mnt/zd-backup/2018/30.12.2018-22-00-02.7z ни
/mnt/zd-backup/2019/30.01.2019-22-00-01.7z ни, которые должны быть.
Евгений, это не особо сложно, просто вы задаете вопросы кривовато. вот решение в одну строку, которое обрабатывает файлы только за текущий год, попробуйте. Если надо другой год - сами дописывайте, вам не угодишь)
for m in {1..12}; do a=$(date -d "$m/1 + 1 month - 1 day" "+%d.%m"); b="^"$a; c=$(ls -p /mnt/zd-backup/ | grep -v / | grep -v $b); [ ! -z "$c" ] && echo $c; done | grep -v Updated