我想通过文件的大小对这段代码的输出进行排序。目前我有:排序一个bash数组
IFS=!
FILEARRAY=(`find * -printf %f!`)
将所有文件名从目录中取出。我试过用各种方法来管道,没有任何作用。是否有可能这样做,或者我需要去以不同的方式获取数组中的文件名?
感谢
我想通过文件的大小对这段代码的输出进行排序。目前我有:排序一个bash数组
IFS=!
FILEARRAY=(`find * -printf %f!`)
将所有文件名从目录中取出。我试过用各种方法来管道,没有任何作用。是否有可能这样做,或者我需要去以不同的方式获取数组中的文件名?
感谢
不知道你是想什么在这里实现,但提取你可能想使用sed
文件的大小。将其传递给sort
或其他分拣实用程序检出xargs
,这为管道提供了一些额外功能,可能有些用处。
编辑: 如果你试图通过大小排序的所有文件在当前目录下, 财产以后这样的:
find ./ -name "*" | xargs ls -s | sort -n
应该工作。
尝试这样代替:
FILEARRAY=$(find * -printf '%s~%f\n' | sort -n | awk -F"~" '{print $2}')
这应该给你按大小排序的文件名列表。
不使用bash数组。也does not parse ls
find . -type f -printf '%s:%f\n' | sort -t: -n -k1 | cut -d: -f2-
当我尝试运行该命令时,我得到'bash:!:event not found'。 –