当前目录有n多个文件,需要按从小到大排序,然后改名成 1...n.
解法如下:(整理来自于论坛)
方法一:
[root@squid mkdir]# ls -lrs
total 24
-rw-r--r-- 1 root root 7 jun 1 01:19 test1.txt
-rw-r--r-- 1 root root 8 jun 1 01:20 test2.txt
-rw-r--r-- 1 root root 9 jun 1 01:21 test3.txt
-rw-r--r-- 1 root root 10 jun 1 01:21 test4.txt
-rw-r--r-- 1 root root 11 jun 1 01:21 test5.txt
-rw-r--r-- 1 root root 12 jun 1 01:22 test6.txt
[root@squid mkdir]# ls -lrs|grep -v total|awk 'i =1{print "mv " $nf" " i}'|sh
[root@squid mkdir]# ll
total 24
-rw-r--r-- 1 root root 7 jun 1 01:19 1
-rw-r--r-- 1 root root 8 jun 1 01:20 2
-rw-r--r-- 1 root root 9 jun 1 01:21 3
-rw-r--r-- 1 root root 10 jun 1 01:21 4
-rw-r--r-- 1 root root 11 jun 1 01:21 5
-rw-r--r-- 1 root root 12 jun 1 01:22 6
方法二:
[root@squid mkdir]# ls -sr | { i=1;while read f;do mv -f "$f" $i;let i ;done;}
[root@squid mkdir]# ls -srl
total 24
-rw-r--r-- 1 root root 7 jun 1 01:27 1
-rw-r--r-- 1 root root 8 jun 1 01:27 2
-rw-r--r-- 1 root root 9 jun 1 01:27 3
-rw-r--r-- 1 root root 10 jun 1 01:27 4
-rw-r--r-- 1 root root 11 jun 1 01:27 5
-rw-r--r-- 1 root root 12 jun 1 01:27 6
方法三:
[root@squid mkdir]# ls -lsr|sed 1d|awk '{print "mv "$nf,nr}'|sh
方法四:(考虑文件名中包含空格的处理)
[root@squid mkdir]# ls -lsr *.* |awk '{printf "mv \""; for(i=9;i
方法五:
[root@squid mkdir]# ls -l | sort -n -k5|awk '{system("mv "$9" "nr-1"")}'|sh
方法六:(最精简)
[root@squid mkdir]# ls -sr|awk '{system("mv "$0" "nr)}'
阅读(12418) | 评论(0) | 转发(2) |