shell参数的问题

干饭人之路 2019-09-12 02:03:48
我开发了一共linux的shell,功能是将一个目录中的文本文件改名,shell如下:

#!/bin/bash
DATA_DATE=$1
cd /home/Oracle/file2/${DATA_DATE}/
for fileName in `ls *${DATA_DATE}.dat`
do
newName=`echo $fileName|sed 's/\_20190905.dat/.dat/g'`
echo ${newName}
mv /home/Oracle/file2/${DATA_DATE}/${fileName} /home/Oracle/file2/${DATA_DATE}/${newName}
done

其中 newName=`echo $fileName|sed 's/\_20190905.dat/.dat/g'` 这一行的20190905这个日期参数我一直无法正确的参数话,目前的解决办法是直接写日期,请问正确的参数化应该怎么写?
...全文
97 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouchao6 2019-09-12
  • 打赏
  • 举报
回复
你的意思是变了放在sed里面没有被识别?可以把单引号改成双引号,变量就可以识别了 或者你可以用rename rename ${DATA_DATE}.dat .dat *.${DATA_DATE}.dat 格式rename .txt .bak *.txt 把所有.txt结尾的文件后缀,改成.bak 修改前的 修改后的 需要修改的文件
zhouchao6 2019-09-12
  • 打赏
  • 举报
回复
date命令,你这种格式用 date +%Y%m%d 就行了,就是以你这种格式显示今天的日期。 要显示成2019-09-05 就是date +%Y-%m-%d 还有-d选项比较常用,比如显示昨天的日期 date -d "1 day ago" +%Y%m%d 或者date -d "yesterday" +%Y%m%d 还有显示小时分钟秒的,星期的,可以看下date命令的帮助

744

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨Linux系统在IBM Power平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • Power Linux社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧