Re: [問題] Shell script 中擷取檔案名稱的問題
※ 引述《gero (憨)》之銘言:
: 最近在做歷史資料歸檔
: 由於要匯入資料庫
: 需要在文字檔中各行的開頭加上該檔名中的日期(行數不固定 因為是依照每個月的天數決
: 定有幾行,若有30天則有30行)
: 並且批次執行(因為有幾萬個檔案)
: ex: File_20080725_got.txt
: aa, bb, cc, dd
: ee, ff, gg, hh
: =>
: 20080725, aa, bb, cc, dd
: 20080725, ee, ff, gg, hh
: 有辦法做的到嗎?
: 先謝謝各位大大看完我的問題了!!請幫幫我吧!!
: 另外,若是沒辦法
: 節取檔名, 還有另一個可以可能可以擷取的
: 就是我的每個檔案第一行固定最右邊會有日期
: 日期跟前面的文字會以空格分開(但空格數不確定)
: 這樣有辦法做到嗎?
以您提出的檔名格式(File_20080725_got.txt)為例,
#!/bin/sh
# 註: 搜尋目前目錄底下,以File開頭的檔案
for f in File*; do
# 註: 備份原檔為 File_20080725_got.txt.bak
mv $f $f.bak
# 註: File_20080725_got.txt 轉成 20080725_got.txt
DATE1=${f#*_}
# 註: 20080725_got.txt 轉成 20080725
DATE1=${DATE1%_*}
# 註: 每行的前面加入 "20080725, " 再把結果存到 File_20080725_got.txt
awk '{ printf "%s, %s\n", date1, $0 }' date1=$DATE1 $f.bak > $f
# 註: 刪除備份檔案
rm -f $f.bak
done
另外要注意的是,以上有 Bash 限定的語法, 在別的 shell 跑可能會有問題
而且, 此例是假設您的所有檔案在同一個資料夾底下, 要遞迥處理的話, 要
另外做處理. 希望對您有所幫助
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.139.161.63
推
07/30 02:06, , 1F
07/30 02:06, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章