johnliu
当前目录有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<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)}\'


分类:

技术点:

相关文章: