Я хочу использовать следующую команду для удаления каталогов только от января 2010
ls -lh | awk '{print $6 " " $9}' | sed -n '/Jan/p' | awk '{print $2}' >>/tmp/file_list
Приведенная выше команда выведет список всех каталогов, датированных январем, но в моем списке есть январь 2010 и январь 2011
Может кто-нибудь может помочь мне с командой SED перечислить только дату каталогов Январь 2010?
Ответы:
Вы можете использовать grep вместо awk / sed, может быть что-то вроде этого?
Проблема в том, что у вас есть первый awk, не включает годы, поэтому 2011 (или 2009, 2008 и т. Д.) Все отображаются в списке, который отправляется в sed.
источник
Никогда не пытайтесь анализировать выходные данные
ls
для чего-либо, кроме целей отображения - это плохая идея .Хотя он использует find и xargs вместо sed, возможно, что-то подобное сработает. Обратите внимание, что это не проверено.
Команда find в конце находит каталоги старше 1 февраля 2010 года, но моложе 01 января 2010 года и безопасно передает их в xargs, используя
'\0'
нулевой символ.источник
+' to
rm -r
сls -l
.