0
我正在尋找一種編程方式將文件的日期添加到文件名。我在Mac,優勝美地(10.10)。在bash中添加文件日期到文件名
使用Bash,我已經付出了相當多的努力,但到目前爲止太新了。這是我到目前爲止有:
#!/bin/bash
#!/bin/bash
(IFS='
'
for x in `ls -l | awk '{print$9" "$7"-"$6"-"$9}'`
do
currentfilename=$(expr "$x" : '\($substring\)')
filenamewithdate=$(expr "$x" : '.*\($substring\)')
echo "$currentfilename"
echo "$filenamewithdate"
done)
這裏的想法是捕捉詳細的LS輸出,使用awk來捕捉字符串的文件名中的列($ 9),並且還日期字段($ 7和$ 6)然後循環輸出捕獲以前的文件名和新的文件名與日期mv文件從舊文件名到新。 awk語句添加一個空格來分隔新的當前文件名。 echo聲明現在在測試我是否能夠解析awk輸出。我只是不知道要爲$ substring添加什麼來獲取所需的字符串部分。
我還有很多需要了解Bash腳本的知識,所以我希望你在我學習的時候能夠忍受我。任何指導?
謝謝。
線對於初學者來說,如果你不知道如何使用'男人programOfInterest',你需要。然後,使用'man stat'。你應該可以使用'stat'的'printf'選項來構建更好的日期文件名。你在'ls ...'中使用'for x'應該替換爲'for f in *; do newFName = $(stat「$ f」... opts to stat); ....; done'。不要在for循環中使用'ls',這是一個不好的習慣。這會讓你以不同的方式思考你的問題。更新你的Q或刪除這個併發佈一個新的Q來幫助澄清你的問題。祝你好運。 – shellter
詳細闡述@ shelter的評論:不要使用任何東西的'ls'輸出。 'ls'是交互式查看目錄元數據的工具。用代碼解析'ls'輸出的任何嘗試都被破壞。 * Globs *非常簡單且正確: 閱讀[Parsing ls](http://mywiki.wooledge.org/ParsingLs) –
如果您在優勝美地編碼,則不要使用linux標籤。我沒有Mac,所以'stat'可能不可用(我希望不是!)。如果沒有,你的'awk'代碼將需要允許文件日期超過六個月的情況,即$ 8的價值變化時間戳,以一年的價值。祝你好運。 – shellter