我開發了一共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這個日期引數我一直無法正確的引數話,目前的解決辦法是直接寫日期,請問正確的引數化應該怎么寫?
uj5u.com熱心網友回復:
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命令的幫助
uj5u.com熱心網友回復:
你的意思是變了放在sed里面沒有被識別?可以把單引號改成雙引號,變數就可以識別了或者你可以用rename rename ${DATA_DATE}.dat .dat *.${DATA_DATE}.dat
格式rename .txt .bak *.txt 把所有.txt結尾的檔案后綴,改成.bak
修改前的 修改后的 需要修改的檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/96088.html
標籤:Power Linux
上一篇:Linux系統切換用戶后變黑屏了
