我希望创建复制命令,以在不删除后缀日期的情况下将文件从一个目录复制到目录中。有多个文件。
例如文件LOAN.DAILY.20191204
想要创建命令
cp LOAN.DAILY.20191204 ../LOAN.DAILY
我的尝试
ls -lrt | awk ' /DAILY/{ print "cp " , $9 , "../" , sub(/\.20191204$/,""); $9) }'
获取o / p
cp LOAN.DAILY.20191204 ../ 1
为什么这个1要来
根据https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html:
如上所述,sub()的第三个参数必须是变量,字段或数组元素。某些版本的awk允许第三个参数成为不是左值的表达式。在这种情况下,sub()仍然会搜索模式并返回零或一,但是替换的结果(如果有的话)会被丢弃,因为没有放置它的位置。
因此,如果要修改第九列的值,则需要在sub
调用中指定它:
ls -lrt | awk ' /DAILY/{ orig=$9; sub(/\.20191204$/,"", $9); print "cp " , orig , "../", $9 }'