这是我在StackOverflow上的第一篇文章,所以请保持温和。
我要做的是按大小(从最大到最小)对find的输出进行排序。
我有一个file.txt,其中包含:
file1
file2
file3
file4
file5
file6
我的代码如下所示:
for x in $(cat file.txt)
do
find -name $x -printf '%s %p\n'| sort -rn
done
但是输出没有排序。
输出是文件的路径(很棒),它们的大小与文件中的顺序相同。
例如:
128 /dir1/file1
8 /dir2/file2
0 file3
4 file4
...
and so on
答案 0 :(得分:0)
您对find
的来电为每个文件打印一行,然后发送到sort
。由于sort
每次调用时只获得一行,因此无需排序,文件按照file.txt
中列出的顺序输出。
相反,将整个循环的输出传递给sort
:
for x in $(cat file.txt)
do
find -name $x -printf '%s %p\n'
done| sort -rn