我想在
中获得以下结果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 ::没有这样的文件或目录
请帮我继续。
答案 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
符号问题