分页: 1 / 1

求助,rename

发表于 : 2011-10-27 16:22
iblicf
求助: 目录下的文件(都是 *.bak 文件),想要全部按顺序改名为 1.bak 2.bak 3.bak ...... 怎么写呢?

================================
rename -n "s/^.*\.bak$/$((i++))\.bak/" /root/test/*

我这个自增不管用 ~ :em03

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 里头的,越简单越好

=======
:em01,谢拉

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
我说的,又没人看见。 :em20

Re: 求助,rename

发表于 : 2011-10-28 12:47
Methuselar
eexpress 写了:我说的,又没人看见。 :em20
人家叫你给例子嘛,是你先没看见的...

Re: 求助,rename

发表于 : 2011-11-01 22:06
naturalaw
Methuselar 写了:
eexpress 写了:我说的,又没人看见。 :em20
人家叫你给例子嘛,是你先没看见的...
:em04 :em04 ee别怪我哈。