Linux 变量作为Sun OS 5.10中的Tar文件名
我正试图在测试中得到以下结果 1.存档为tar的文件,当前日期作为tar名称的一部分。 2.存档后删除的文件 /usr/sap/ST1/POC/backtest/*.txt有2个txt文件 这很好,因为文件名被称为arc_2017-02-28.tar 但当我试着这样做时:Linux 变量作为Sun OS 5.10中的Tar文件名,linux,shell,tar,sunos,Linux,Shell,Tar,Sunos,我正试图在测试中得到以下结果 1.存档为tar的文件,当前日期作为tar名称的一部分。 2.存档后删除的文件 /usr/sap/ST1/POC/backtest/*.txt有2个txt文件 这很好,因为文件名被称为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" %
arc_name="arc_"`date +%F`".tar"
(find /usr/sap/ST1/POC/backtest/*.txt )| xargs -I % sh -c 'tar cvf "$arc_name" % ; rm -f %'
输出是一个错误:
tar::没有这样的文件或目录
请帮助我继续执行此操作。这将正常工作:
(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中的%,因为这将导致日期+%F函数中的%符号出现问题非常感谢
(find /usr/sap/ST1/POC/backtest/*.txt) | xargs -I {} sh -c 'arc_name="arc_"`date +%F`".tar"; tar cvf "$arc_name" {} ; rm -f {}'