关于linux:在SunOs 5.10中作为Tar文件名变量

Variable as Tar file name in SunOs 5.10

我正在尝试获得以下结果

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

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

1
(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,所以这项功能很好。

但是当我尝试这个的时候:

1
2
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

请帮我继续这个。


这将正常工作:

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_"date+%f".tar"移入sh是有意义的。

但是你必须改变xargs中的%符号,因为这会导致date +%F函数中的%符号出现问题。