各位好
我有一堆文字檔,有上千隻,我想要寫一個迴圈,因為內容完全沒有時間,只有檔名有,所以我想把檔案名稱的日期和時間寫到文字檔的第一欄放進去,請問一下應該如何處理?
我想到的是,下面這種方法,但應該是錯的,不知道怎麼修正比較好?
filepath = ‵find . xxxxxxx ‵
filedatetime = ‵find . xxxxxxx ‵
sed 's/^/'$filedate' /' $filename
$filedatetime print 出來的格式是20221011 133045
感謝!
for F in `ls -1 20*`
do
sed -i "s/^/$F /" $F
done
for i in $filedate
do
sed "s/^/$filedate /" $filename
done
我這樣跑有錯誤訊息?
sed: unmatched '/'
你程式是錯的,當然跑就有錯誤訊息,沒毛病啊
只是我不懂你為啥要寫這樣?我都給正確答案了不是嗎
謝謝,我修了一下,因為是很多個子目錄裡面都有檔案,所以我想用find去把檔案名稱抓出來,放到一個變數。
然後在抓一個所有的檔案路徑,放到另外一個變數。
for F in `find . -not -name '*ERR*' -name *2022*.txt`
do
sed "s/^/$F /" $F
done
執行結果有另外一個錯誤。
sed: bad option in substitution expression
有目錄要說啊!因為有目錄,所以 $F 中含有 / 當然就會跟 sed 語法衝突。所以程式要改成:
for F in `find . -name '2022*.txt'`
do
N=`basename $F|sed 's/.txt$//'`
sed -i "s/^/$N /" $F
done
N 是把目錄去掉,只剩檔名,也就是你要的日期。
謝謝你,可以了。