当前目录有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
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]# 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
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<NF;i++) printf $i FS; print $NF"\" "++j}' |sh
方法五:
[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)}'
转载于:https://blog.51cto.com/255361/836920