Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在循环内对find的输出进行排序_Linux_Sorting_Unix_Find_Sh - Fatal编程技术网

Linux 在循环内对find的输出进行排序

Linux 在循环内对find的输出进行排序,linux,sorting,unix,find,sh,Linux,Sorting,Unix,Find,Sh,这是我关于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 但是,输出没有排序 输出是文件的路径(非常好)及其大小,顺序与文件中的顺序相同 例如:

这是我关于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

调用
find
为每个文件打印一行,然后发送到
sort
。由于每次调用时,
sort
只获取一行,因此无需排序,文件将按照
file.txt
中列出的顺序输出

相反,通过管道将整个循环的输出传输到
sort

for x in $(cat file.txt)
do
find -name $x -printf '%s %p\n'
done| sort -rn

循环作用于文本文件中的每一行。因此,您每次都要按照文本文件的顺序传递
sort
1个文件。抱歉,我无法建议如何修复它,但希望这有助于了解发生了什么。我想阵列可能会有帮助,谢谢你,先生。你帮了大忙:)