awk - 提取部分列以制作 cp 命令
问题描述
我想创建复制命令来将文件从一个目录复制到它的后面,并删除后缀日期。那里有多个文件。
例如文件LOAN.DAILY.20191204
想创建命令
cp LOAN.DAILY.20191204 ../LOAN.DAILY
我的尝试
ls -lrt | awk ' /DAILY/{ print "cp " , $9 , "../" , sub(/\.20191204$/,""); $9 }'
获得输出
cp LOAN.DAILY.20191204 ../ 1
为什么这个 1 来了
解决方案
这可能对您有用(GNU sed):
ls *DAILY* | sed -E 's#^(.*)\..*#cp & \1#'
一旦检查了输出,就使用这个版本来制定副本。
ls *DAILY* | sed -E 's#^(.*)\..*#cp & \1#e'
或使用 GNU 并行的替代方法:
parallel --dry-run cp {} {.} ::: *DAILY*
再次检查结果,如果一切正常,请使用:
parallel cp {} {.} ::: *DAILY*
推荐阅读
- python - 使用 GCN-LSTM 为图表示的场景生成描述
- python - 为什么不显示 tkinter 窗口?
- c# - 如何在 C# 中验证 PowerShell 脚本语法?
- java - 如何在 Hadoop SequenceFile 中找到值?
- scala - 如何使用 scala 在路由上绑定枚举?
- ios - 提高 VNDetectHumanBodyPoseRequest 的身体跟踪性能
- javascript - For 循环、异步等待、承诺 - Javascript
- python-3.x - 从附加到连接方法的选择方法中的列列表中转换列
- ios - iOS 12 未显示蓝牙权限
- php - 在 laravel 项目 Stripe\Exception\ApiConnectionException 上连接条带 api 时出错