在SunOs 5.10中作为Tar文件名变量

时间:2017-02-28 08:41:45

标签: linux shell tar sunos

我想在

中获得以下结果

1.files归档为tar,当前日期作为tar名称的一部分。 2.归档后删除文件。

  

/ usr / sap / ST1 / POC / backtest / * .txt有2个txt文件。

(find /usr/sap/ST1/POC/backtest/*.txt )| xargs -I % sh -c 'tar cvf arc_2017-02-28.tar % ; rm -f %'

这样可以正常工作,因为文件名被称为arc_2017-02-28.tar。

但是当我尝试这个时:

arc_name="arc_"`date +%F`".tar"
(find /usr/sap/ST1/POC/backtest/*.txt )| xargs -I % sh -c 'tar cvf "$arc_name" % ; rm -f %'

输出错误:

  

tar ::没有这样的文件或目录

请帮我继续。

1 个答案:

答案 0 :(得分:1)

这可以正常工作:

(find /usr/sap/ST1/POC/backtest/*.txt) | xargs -I {} sh -c 'arc_name="arc_"`date +%F`".tar"; tar cvf "$arc_name" {} ; rm -f {}'

所以你的命令的问题是sh -c似乎无法读取你的变量,如果我们可以调用可变范围那么可以说,

所以将变量arc_name="arc_"日期+%F ".tar"移到sh中是有道理的。

但您必须更改%中的xargs,因为这会在%函数

中产生date +%F符号问题