如何在bash shell中使用find命令进行正确排序。 例如
file name size
---------------------------------------------
aa.txt 346
bb.txt 29
cc.txt 36
dd.txt 856
等等。 如果我尝试使用此方法使数组处理如下
find . -type f -iname "*.txt" | sort -nk9
然后列出的值不适合文件名列表...如何根据文件名排序?
declare -a size=$(find . -type f -iname "*.txt" | sort -nk9 )
size_array=$(size)
始终应根据文件名的实际顺序像这样(346,29,36,856)放出,这样可以是两个数组的最后一个是(aa.txt,bb.txt,cc.txt,dd.txt) 第一个文件必须匹配第一个大小元素..但在这种情况下不匹配..如何匹配??
最后我想放了!使用bash find命令
filename=(aa.txt, bb.txt, cc.txt,dd.txt)
filesize=(346,29,36,856)
答案 0 :(得分:3)
您的问题仍然不是很清楚。但是根据我对要求的理解,一个大概的解决方案是
files=$(find . -type f -iname "*.txt" | sort)
file_sizes=$(find . -type f -iname "*.txt" | sort | xargs -I{} stat -f%z {})
文件名位于files变量中,文件大小位于file_sizes变量中,并按字母顺序排序。