Вот вам еще одно решение
cal | awk 'NR >= 3 { tu = substr($0,7,2) +0 } tu { print tu; exit }'
4
cal 3 2016 | awk 'NR >= 3 { tu = substr($0,7,2) +0 } tu { print tu; exit }'
1
Он выбирает столбец вторника (символы 7 и 8 )и выдает первое не-нулевое значение. Подход можно смело экстраполировать на любой день недели.
Узор
*-*-*/
соответствует каталогам с двумя или более дефисами. *
соответствует любой строке (ноль или более символов ).
Если вы хотите сопоставлять только имена каталогов, которые не должны начинаться и заканчиваться дефисом (, как в вашем примере ), вы можете использовать
[!-]*-*-*[!-]/
вместо этого. [!-]
соответствует любому символу, который не является(!
)дефисом.
Выполнить
ls -d [!-]*-*-*[!-]/
сначала проверьте, не те ли это записи, которые вы хотите удалить. Затем запустите
rm -r [!-]*-*-*[!-]/
, чтобы удалить их рекурсивно. Если вам действительно необходимо принудительное удаление, добавьте в команду -f
.
rm -r *-*-*-*-*
ВНИМАНИЕ :Будет удален каждый файл, соответствующий этой схеме. Таким образом, файлы типа:
system-file-separated-by-minus
также будет удален.
Часть ' *' обозначает все (ноль, один или несколько символов )до следующего заданного, в данном случае разделенного минусом. Если вы знаете, что ваши файлы 8 символов перед -, 4 перед следующим можно сказать:
rm -r ????????-????-????-????-????????????
Каждый ? обозначает любой символ. Это удалит все файлы, соответствующие вашей схеме. Но также будут удалены файлы с такой же схемой, которые вы, возможно, не хотите, поэтому сначала проверьте это.
Просто выполните эту команду в родительском каталоге
rm -r *-*-*/