ami*_*sef 2 command-line shell rename files
我想给我的文件添加前缀(.dat
),如下所示:
CLY_BIZ_COM_PERD.dat -> 20160622CLY_BIZ_COM_PERD.dat
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下方法:
key=`date "+%Y%m%d"`
for i in $(ls /Path/*.dat); do mv ${i} "${key}${i}" ;done
Run Code Online (Sandbox Code Playgroud)
但是这个命令给我的文件添加后缀而不是前缀。我怎样才能做到这一点?
对当前脚本的两处更改:
(注意:我还将您的“/Path”更改为“./Path”,因为我不想创建根级 /Path 目录。不过,同样的原则适用。
设置一些示例文件:
mkdir Path && cd Path
touch CLY_BIZ_COM_PERD.dat jeff.dat a.dat c\ d.dat
cd ..
Run Code Online (Sandbox Code Playgroud)
这是一次演练:
for f in ./Path/*.dat
do
printf "mv '%s' '%s'\n" "$f" "$(dirname "$f")/${key}$(basename "$f")"
done
Run Code Online (Sandbox Code Playgroud)
试运行的输出:
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'
Run Code Online (Sandbox Code Playgroud)
一旦你满意了,就真正去做吧:
for f in ./Path/*.dat
do
mv "$f" "$(dirname "$f")/${key}$(basename "$f")"
done
Run Code Online (Sandbox Code Playgroud)
...结果:
$ ls -1 Path
20160622a.dat
20160622c d.dat
20160622CLY_BIZ_COM_PERD.dat
20160622jeff.dat
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1631 次 |
最近记录: |