如何将文件名传递给tar?

时间:2016-09-10 10:04:39

标签: bash

我认为这个命令应该有效,但事实并非如此。我想将最高文件名编号的文件传输到tar

ls file-* | tail -1 | tar -xvf

它告诉我-f选项需要一个参数,所以我想我需要将stdin重定向到tar但是这不起作用......

tar -xvf < ls file-* | tail -1

我知道我可以将它存储在一个变量中,但我想在一行中完成它。

2 个答案:

答案 0 :(得分:1)

假设您的文件名不包含任何空白/字符,您可以这样做:

ls file-* | tail -1 | xargs tar -xvf

答案 1 :(得分:1)

如果您的文件名包含空格或全局,则可以执行以下操作:

tar -xvf "$(ls file-* | tail -1)"

这称为command substitution,如果它被双引号括起,则会正确引用其结果。因此,例如,如果文件名是

file-01
file-02

该命令将扩展为

tar -xvf "file-02"

即使有空格和小球,这也会起作用,因为它们被引用了。