Chinaunix

标题: shell如何对文件按数字文件名排序? [打印本页]

作者: linfengfeiye    时间: 2012-06-29 07:19
标题: shell如何对文件按数字文件名排序?
我有一系列文件在文件夹 /test目录下

file1_sc.txt
file2_cd.txt
file5_ss.txt
file8_ab.txt
file15_cc.txt

现在我需要循环处理这些文件,但是需要按照file字串后的数字进行顺序处理,该如何写这个循环?

大概如下,echo表示处理该文件

for file in `ls /test`
do
    echo $file
done
作者: yinyuemi    时间: 2012-06-29 07:37
回复 1# linfengfeiye
  1. echo 'file10_sc.txt
  2. file2_cd.txt
  3. file5_ss.txt
  4. file8_ab.txt
  5. file15_cc.txt' |sort -t "_" -k1.5n
  6. file2_cd.txt
  7. file5_ss.txt
  8. file8_ab.txt
  9. file10_sc.txt
  10. file15_cc.txt
复制代码

作者: linfengfeiye    时间: 2012-06-29 07:51
回复 2# yinyuemi


    管用,谢谢你,请前辈多多指教。
   
    发现sort和awk挺强大。
作者: rdcwayx    时间: 2012-06-29 08:21
sort 第一列的话, -t "_" 是多余的。
  1. ls file*.txt |sort -k1.5n
复制代码

作者: linfengfeiye    时间: 2012-06-29 09:08
回复 2# yinyuemi


    发现不管用了,当数字超过一位时不行。


作者: yinyuemi    时间: 2012-06-29 10:08
回复 5# linfengfeiye


    没明白什么情况?
作者: 惟吾无为    时间: 2012-06-30 21:36
ls -v 按版本号排序
作者: linfengfeiye    时间: 2012-07-01 01:53
回复 6# yinyuemi


    是我弄错了,是可以的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2