SunOs 5.10 中变量为 Tar 文件名

Variable as Tar file name in SunOs 5.10

我试图在

中获得以下结果

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

/usr/sap/ST1/POC/backtest/*.txt has 2 txt files.

(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: : No such file or directory

请帮我处理一下。

这会正常工作:

(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_"date +%F".tar" 移动到 sh 是有意义的。

但是您必须更改 xargs 中的 %,因为这会导致 date +%F 函数

中的 % 符号出现问题