================================
rename -n "s/^.*\.bak$/$((i++))\.bak/" /root/test/*
我这个自增不管用 ~

e 兄给个例子啊eexpress 写了:gprename
rename 不能实现么? 我是要写到 cron 里头的,越简单越好Methuselar 写了:代码: 全选
ls -l *.bak | 你的sort | awk '{system("mv "$9" "NR".bak")}'
代码: 全选
perl -e 'my $i=0; for(@ARGV){ $i++; rename($_,"$i.bak"); }' *.bak
看不懂求解释。。。fnan 写了:kose3@kose3-laptop:~/b$ ls
a.bak b.bak c.bak d.bak e.bak
kose3@kose3-laptop:~/b$ ls|grep -n ''|while read f;do mv -v ${f#*:} ${f/:*./.};done
`a.bak' -> `1.bak'
`b.bak' -> `2.bak'
`c.bak' -> `3.bak'
`d.bak' -> `4.bak'
`e.bak' -> `5.bak'
kose3@kose3-laptop:~/b$ ls
1.bak 2.bak 3.bak 4.bak 5.bak
#kose3@kose3-laptop:~/b$ ls|grep -n ''|while read f;do echo "得到 $f 将要转为 命令 mv -v ${f#*:} ${f/:*./.} 跟着执行";donelilydjwg 写了:看不懂求解释。。。fnan 写了:kose3@kose3-laptop:~/b$ ls
a.bak b.bak c.bak d.bak e.bak
kose3@kose3-laptop:~/b$ ls|grep -n ''|while read f;do mv -v ${f#*:} ${f/:*./.};done
`a.bak' -> `1.bak'
`b.bak' -> `2.bak'
`c.bak' -> `3.bak'
`d.bak' -> `4.bak'
`e.bak' -> `5.bak'
kose3@kose3-laptop:~/b$ ls
1.bak 2.bak 3.bak 4.bak 5.bak
啊,原来我把 grep -n 看漏了,囧。。。。也许用 cat -n 或者 nl 会更快?fnan 写了: #kose3@kose3-laptop:~/b$ ls|grep -n ''|while read f;do echo "得到 $f 将要转为 命令 mv -v ${f#*:} ${f/:*./.} 跟着执行";done
得到 1:a.bak 将要转为 命令 mv -v a.bak 1.bak 跟着执行
得到 2:b.bak 将要转为 命令 mv -v b.bak 2.bak 跟着执行
得到 3:c.bak 将要转为 命令 mv -v c.bak 3.bak 跟着执行
得到 4:d.bak 将要转为 命令 mv -v d.bak 4.bak 跟着执行
得到 5:e.bak 将要转为 命令 mv -v e.bak 5.bak 跟着执行
kose3@kose3-laptop:~/b$
Methuselar 写了:人家叫你给例子嘛,是你先没看见的...eexpress 写了:我说的,又没人看见。