Используйте -print0
опция найти и -0
опция к xargs
если у Вас есть имена файла или каталога с пробелами:
find {dir} -print0 | xargs -0r {command}
-print0
опция найти распечатывает имена файлов как a NUL
- разделенный, а не пробел разделил список, в то время как -0
опция к xargs
дает этому команду повреждать свой вход на NUL
вместо пробела. С тех пор NUL
один из символов, который не позволяется в именах файлов Unix, нет никакого пути к нему, чтобы быть принятым за часть имени файла.
-r
опция там так, чтобы xargs
не даст Вам ошибку, если она не будет иметь никакого входа.
В ударе просто используйте что-то как alertcommand | grep $(date +"%m/%d")
$()
выполняет команду в подоболочке и возвращает вывод команды как строка. Кроме того, можно включить команду с обратными галочками к тому же эффекту.
Вы могли просто присвоить вывод своей команды даты к другой переменной и использования что как аргумент:
myDateVariable=`date +"%m/%d"`
alertcommand | grep $myDateVariable
Таким образом, Вы могли снова использовать значение даты в будущем и также отладить любые промежуточные шаги
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`
csh
вредно, прекратите использовать его. право faqs.org/faqs/unix-faq/shell/csh-whynot
– Chris Down
14.11.2011, 14:35