我想在终端内打开特定日期和时间的图像。我使用以下命令找到了图像:
# find . -type f -name '*2018-05-24*' | grep 18-46-31
./Screenshot from 2018-05-24 18-46-31.png
现在我想在终端中从上面的输出打开此图像,但下面的命令似乎不起作用。
# find . -type f -name '*2018-05-24*' | grep '18-46-31' | xargs xdg-open
我究竟做错了什么?我使用 xargs (可能是我使用了错误的 xargs )来尝试将 grep 的输出作为选项传递给 xdg-open 但我得到:
xdg-open: unexpected argument 'from'
Try 'xdg-open --help' for more information.
答案1
xargs
,默认情况下,将输入拆分为任何空格,所以最后,它xdg-open
以四个参数./Screenshot
, from
, 2018-05-24
,运行18-46-31.png
。使用 GNU xargs,您可以使用xargs -d '\n'
它在换行符上拆分,但您可以使用以下命令完成整个操作find
:
find . -type f -name '*2018-05-24*18-46-31*' -exec xdg-open {} \;
find
(严格来说,这与您的+组合不同grep
,因为该模式强制日期和时间按此顺序排列,并且时间也必须是文件名本身的一部分。find -name -name '*2018-05-24*' | grep 18-46-31
也将匹配./18-46-31/2018-05-24.png
。)