Shell
用完整路徑重命名文件(前綴)?
我想像這樣為我的文件(
.dat
)添加前綴:CLY_BIZ_COM_PERD.dat -> 20160622CLY_BIZ_COM_PERD.dat
我嘗試了以下方法:
key=`date "+%Y%m%d"` for i in $(ls /Path/*.dat); do mv ${i} "${key}${i}" ;done
但這個命令後綴我的文件,而不是前綴它。我怎樣才能做到這一點?
對目前腳本的兩個更改:
(注意:我還將您的“/Path”更改為“./Path”,因為我不想創建根級 /Path 目錄。不過,同樣的原則適用。
要設置一些範例文件:
mkdir Path && cd Path touch CLY_BIZ_COM_PERD.dat jeff.dat a.dat c\ d.dat cd ..
這是一個試執行:
for f in ./Path/*.dat do printf "mv '%s' '%s'\n" "$f" "$(dirname "$f")/${key}$(basename "$f")" done
試執行的輸出:
mv './Path/a.dat' './Path/20160622a.dat' mv './Path/c d.dat' './Path/20160622c d.dat' mv './Path/CLY_BIZ_COM_PERD.dat' './Path/20160622CLY_BIZ_COM_PERD.dat' mv './Path/jeff.dat' './Path/20160622jeff.dat'
一旦你滿足了,就去做吧:
for f in ./Path/*.dat do mv "$f" "$(dirname "$f")/${key}$(basename "$f")" done
…結果:
$ ls -1 Path 20160622a.dat 20160622c d.dat 20160622CLY_BIZ_COM_PERD.dat 20160622jeff.dat