Linux 转换为GNU日期的管道字符串-如何使其从stdin读取?

Linux 转换为GNU日期的管道字符串-如何使其从stdin读取?,linux,date,pipe,stdin,Linux,Date,Pipe,Stdin,GNU Date允许您转换日期字符串,如下所示: $ date +"%d %m %Y" -d "yesterday" 04 01 2012 是否可以通过管道将日期字符串传递给它进行转换?我试过明显的-d-如下: $ echo "yesterday" | date +"%d %m %Y" -d - 但它打印的是今天的日期而不是昨天 是否可以将值传递给它,或者它不支持这一点 谢谢。是的 echo "yesterday" | xargs date +"%d %m %Y" -d 您可以使用`

GNU Date允许您转换日期字符串,如下所示:

$ date +"%d %m %Y" -d "yesterday"
  04 01 2012
是否可以通过管道将日期字符串传递给它进行转换?我试过明显的
-d-
如下:

$ echo "yesterday" | date +"%d %m %Y" -d -
但它打印的是今天的日期而不是昨天

是否可以将值传递给它,或者它不支持这一点

谢谢。

是的

 echo "yesterday" | xargs date +"%d %m %Y" -d

您可以使用
`command`
$(command)
替换:

date +"%d %m %Y" -d $(echo "yesterday")

日期
-f
告诉它做与
-d
相同的事情,除了文件中的每一行。。。您可以将文件名设置为
-
,使其从标准输入读取

echo“昨天”|日期+%d%m%Y“-f-

在bash中,仅将其插入:

date +"%d %m %Y" -f <(echo yesterday)

date+%d%m%Y“-f为什么在我问这个问题两年后突然投了反对票?我不介意被否决,但如果能解释为什么以及如何改进这个问题,我将不胜感激……请使用
xargs-0
使它与带有空格的日期一起工作;)