有没有办法使用ls -ltr
with的输出xargs
?
假设 ls 的结果是一个文件,如下所示。
ls -ltr | tail -1 | xargs -I{} open {}
为了比较,我使用以下命令来使用 find 移动文件:
find ~/Downloads/ -iname '*hello*' -print0 | xargs -0 -I{} mv {} ./
我们可以以某种方式使用 NUL 字符吗?
[已解决]
正如@illkachu 的评论中所述,以下工作但不建议使用。
somecmd "$(ls -tr | tail -1)"
Stéphane 所建议的似乎是替代方案。
通常,您不会因为 的输出
ls
不能可靠地进行后处理。例如:
如果最新文件的名称包含换行符,则不起作用。
理想情况下,您会想要:
但不幸的是,我不知道任何
ls
支持-z
/-0
选项的实现,并且GNU 的维护者ls
至少多次拒绝添加它。现在,还有其他一些实现方式。
使用 GNU 和 ast-open 实现
ls
,在 C 语言环境中,带有--quoting-style=shell-always
选项的输出可由zsh
,ksh93
或进行后处理bash
:虽然在 zsh 中,但你只需要做
或者:
zsh
内置支持按修改时间(以及许多其他远远超出功能的标准)对文件进行排序ls
。FreeBSD
ls
有一个--libxo
生成 json 或 xml 输出的选项,所以你可以这样做:但是那样做整个事情会更简单
perl
。正如您已经被告知的那样:通常这不是您想要选择的方法。但是,作为开始: