awk批量修改文件名,awk用法
今天嘗試了編個批量修改文件時間的程序,發(fā)現(xiàn)沒有必要,直接用date -t 201311200000.30 file* 就能實(shí)現(xiàn)。
今天用awk把昨天的三個程序合并為一個,如下
#!/bin/sh
ls
echo "Which file's name you want to change?"
read name
file={ ls ?| grep "$name" }
ls ?| grep "$name"
echo "Do you want to change them? ?Y/N"
read answer
case $answer in
[Yy]|[Yy][Ee][Ss])
if [ -f $file ]
then
echo "what to change?"
read new
ls -l | grep "$name" | awk '{m=$9;gsub(/'$name'/,"'$new'",$9);print "mv "m" "$9}'
ls -l | grep "$name" | awk '{m=$9;gsub(/'$name'/,"'$new'",$9);print "mv "m" "$9}'|sh
else
echo "no such file"
fi
;;
[Nn]|[Nn][Oo])
echo "exiting"
;;
*)
echo "invalid answer"
;;
esac
好處是不但可以修改文件前邊或后邊的相同名,還可以修改中間的名,目前沒有完善,粗粗可以執(zhí)行
date "+%Y%m%d" 可顯示數(shù)字格式的當(dāng)前年月日
echo ${n:0:3} 這個表示取變量n字符串的一段,從第一個開始算3位截取
awk '/^(J|L)/' file 這個表示讀file時,當(dāng)該行第一個字母為J或L時打印全行
awk '{print ($1<50) ? "OK "$1 : "error "$1}' file
讀取file,當(dāng)該行第一個數(shù)小于50時,顯示"OK"并輸出變量$1,否則顯示"error"并輸出變量$1
awk '{/^A/,/B$/}' file 打印file中以A字母開頭到以B字母結(jié)束的內(nèi)容
awk '{if ($1<4) print $1"小于4"}' file 讀取file,當(dāng)每行第一個參數(shù)小于4時輸出變量$1小于4
awk '{if ($1<100) print $1"小于100";else print $1"大于等于100"}' file
讀取file,當(dāng)每行第一個參數(shù)小于100輸出變量$1小于100,否則輸出變量$1大于等于100
awk '{if ($1<100) {i++;print $i}}' ?file
讀取file,當(dāng)每行第一個參數(shù)小于100時,變量i累加,并打印出第i位參數(shù)
轉(zhuǎn)載于:https://blog.51cto.com/zhouzhenxing/1353244
總結(jié)
以上是生活随笔為你收集整理的awk批量修改文件名,awk用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PIC18F中断定时器
- 下一篇: Oracle审计功能