Linux 在循环内对find的输出进行排序
这是我关于StackOverflow的第一篇文章,所以请温柔一点 我试图做的是按大小(从最大到最小)对find的输出进行排序 我有一个file.txt,其中包含: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 但是,输出没有排序 输出是文件的路径(非常好)及其大小,顺序与文件中的顺序相同 例如:
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个文件。抱歉,我无法建议如何修复它,但希望这有助于了解发生了什么。我想阵列可能会有帮助,谢谢你,先生。你帮了大忙:)