如何遍历目录并调整文件名

时间:2011-07-23 19:50:32

标签: linux unix scripting ksh

我想编写一个循环遍历目录的ksh脚本,并更改​​文件名以包含001_DTS(其中DTS是日期时间戳),002_DTS,003_DTS等

并删除aa,ab等因为我想将它与split函数(从该函数创建的文件)一起使用。

3 个答案:

答案 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