分页: 1 / 1
求助,rename
发表于 : 2011-10-27 16:22
由 iblicf
求助: 目录下的文件(都是 *.bak 文件),想要全部按顺序改名为 1.bak 2.bak 3.bak ...... 怎么写呢?
================================
rename -n "s/^.*\.bak$/$((i++))\.bak/" /root/test/*
我这个自增不管用 ~

Re: 求助,rename
发表于 : 2011-10-27 16:27
由 eexpress
gprename
Re: 求助,rename
发表于 : 2011-10-27 16:38
由 iblicf
eexpress 写了:gprename
e 兄给个例子啊
Re: 求助,rename
发表于 : 2011-10-27 16:39
由 Methuselar
代码: 全选
ls -l *.bak | 你的sort | awk '{system("mv "$9" "NR".bak")}'
Re: 求助,rename
发表于 : 2011-10-27 16:49
由 lilydjwg
来个另类的:
vim + renamer.vim + vis.vim
Re: 求助,rename
发表于 : 2011-10-27 16:50
由 iblicf
Methuselar 写了:代码: 全选
ls -l *.bak | 你的sort | awk '{system("mv "$9" "NR".bak")}'
rename 不能实现么? 我是要写到 cron 里头的,越简单越好
=======

,谢拉
Re: 求助,rename
发表于 : 2011-10-27 17:04
由 lilydjwg
代码: 全选
perl -e 'my $i=0; for(@ARGV){ $i++; rename($_,"$i.bak"); }' *.bak
Re: 求助,rename
发表于 : 2011-10-27 22:31
由 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
Re: 求助,rename
发表于 : 2011-10-27 22:43
由 lilydjwg
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
看不懂求解释。。。
Re: 求助,rename
发表于 : 2011-10-27 22:59
由 fnan
lilydjwg 写了: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/:*./.} 跟着执行";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$
Re: 求助,rename
发表于 : 2011-10-27 23:27
由 lilydjwg
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$
啊,原来我把 grep -n 看漏了,囧。。。。也许用 cat -n 或者 nl 会更快?
Re: 求助,rename
发表于 : 2011-10-28 8:56
由 eexpress
我说的,又没人看见。

Re: 求助,rename
发表于 : 2011-10-28 12:47
由 Methuselar
eexpress 写了:我说的,又没人看见。

人家叫你给例子嘛,是你先没看见的...
Re: 求助,rename
发表于 : 2011-11-01 22:06
由 naturalaw
Methuselar 写了:eexpress 写了:我说的,又没人看见。

人家叫你给例子嘛,是你先没看见的...

ee别怪我哈。