我想编写一个循环遍历目录的ksh脚本,并更改文件名以包含001_DTS(其中DTS是日期时间戳),002_DTS,003_DTS等
并删除aa,ab等因为我想将它与split函数(从该函数创建的文件)一起使用。
答案 0 :(得分:2)
prefix="x" # the default 'split' prefix, change to suit yourself
count=1
dts=$(date +%Y%m%d%H%M%S)
for f in "$prefix"[a-z][a-z]; do
mv "$f" "$(printf "%s%03d_%s" "$prefix" $count $dts)"
(( count++ ))
done
答案 1 :(得分:0)
这个怎么样,而不是shell特定的(ksh / bash)
cd /path/to/dir
for file in *
do
mv $file ${file}_$(date +%Y%m%d%H%M%S) && echo "file moved" || echo "unable to move"
done
如果你想在循环之前修复DTS的值,只需像其他帖子那样分配变量。
答案 2 :(得分:-2)
首先,运行bash :-)然后解决它:
bash # :-)
J=1
for I in * ; do
mv -i $I `printf '%03d' $J`_DTS
J=$((J+1))
done