2011-11-15 132 views
1

我想通过文件的大小对这段代码的输出进行排序。目前我有:排序一个bash数组

IFS=! 
FILEARRAY=(`find * -printf %f!`) 

将所有文件名从目录中取出。我试过用各种方法来管道,没有任何作用。是否有可能这样做,或者我需要去以不同的方式获取数组中的文件名?

感谢

+1

当我尝试运行该命令时,我得到'bash:!:event not found'。 –

回答

0

不知道你是想什么在这里实现,但提取你可能想使用sed文件的大小。将其传递给sort或其他分拣实用程序检出xargs,这为管道提供了一些额外功能,可能有些用处。

编辑: 如果你试图通过大小排序的所有文件在当前目录下, 财产以后这样的:

find ./ -name "*" | xargs ls -s | sort -n 

应该工作。

0

尝试这样代替:

FILEARRAY=$(find * -printf '%s~%f\n' | sort -n | awk -F"~" '{print $2}') 

这应该给你按大小排序的文件名列表。

0

不使用bash数组。也does not parse ls

find . -type f -printf '%s:%f\n' | sort -t: -n -k1 | cut -d: -f2-