以bash“for”循环排序

时间:2011-10-20 19:40:47

标签: bash unix sorting

有没有办法控制运行时出现的排序, 因为我在*;做; echo $ i;完成; 在我的目录中。 它似乎总是使用ascii排序。无论如何做数字排序?

谢谢, 的Vivek

4 个答案:

答案 0 :(得分:5)

如何制作文件名,以便它们自然地排序为数字,即用前导零填充。而不是1 .. 10 .. 100,请使用001 ..010 .. 100

包含子目录:

for i in $( ls -d * | sort -n ); do echo $i; done;

排除子目录:

for i in $( ls | sort -n ); do echo $i; done;

我希望这会有所帮助。

答案 1 :(得分:4)

您始终可以使用sort(1)及其数字排序:

for i in $(ls -1 * | sort -n) ; do echo $i ; done

答案 2 :(得分:0)

您可以使用您为目录提供的ls [排序选项]的排序 即。

      for i in `ls -X` ; do
             echo $i
      done

首先执行带有特定排序的ls命令,在示例中为扩展排序,然后用for循环给出列表

答案 3 :(得分:0)

for i in $(ls | sort -n) ; do echo $i ; done