Как питаться, результаты даты управляют в grep для фильтрации результатов другой команды

Используйте -print0 опция найти и -0 опция к xargs если у Вас есть имена файла или каталога с пробелами:

find {dir} -print0 | xargs -0r {command}

-print0 опция найти распечатывает имена файлов как a NUL- разделенный, а не пробел разделил список, в то время как -0 опция к xargs дает этому команду повреждать свой вход на NUL вместо пробела. С тех пор NUL один из символов, который не позволяется в именах файлов Unix, нет никакого пути к нему, чтобы быть принятым за часть имени файла.

-r опция там так, чтобы xargs не даст Вам ошибку, если она не будет иметь никакого входа.

3
13.04.2017, 15:36
3 ответа

В ударе просто используйте что-то как alertcommand | grep $(date +"%m/%d")

$() выполняет команду в подоболочке и возвращает вывод команды как строка. Кроме того, можно включить команду с обратными галочками к тому же эффекту.

5
27.01.2020, 21:13
  • 1
    Это работало, кажется, что я просто пропускал формат того, как записать это из другого вопроса, который я отметил. Я предпочитаю использовать $ (), поскольку это - более современная реализация. –  MaQleod 11.08.2011, 00:16

Вы могли просто присвоить вывод своей команды даты к другой переменной и использования что как аргумент:

myDateVariable=`date +"%m/%d"`
alertcommand | grep $myDateVariable

Таким образом, Вы могли снова использовать значение даты в будущем и также отладить любые промежуточные шаги

2
27.01.2020, 21:13
  • 1
    Не столь полезный для меня как однострочная команда, но все еще действительный метод. –  MaQleod 11.08.2011, 00:17
  • 2
    Можно всегда разделять их через точку с запятой. Например, Вы могли сказать myDateVariable=`date +"%m/%d"`; alertcommand | grep $myDateVariable –  Sudipta Chatterjee 11.08.2011, 11:19

В оболочке FreeBSD csh я не могу использовать оба ваших метода.

1)

cat /var/log/exim/mainlog | grep $(date +%Y-%m-%d)
Illegal variable name.

2)

d=`date +%Y-%m-%d`;cat /var/log/exim/mainlog|grep $d
d=2011-11-13: Command not found.

Но я могу использовать непосредственно backticked код как это:

cat /var/log/exim/mainlog | grep `date +%Y-%m-%d`
0
27.01.2020, 21:13

Теги

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