2017-05-15 16 views
0

이것은 StackOverflow의 첫 번째 게시물이므로 부드럽게 작성하십시오.루프 내부에서 찾기의 출력 정렬

내가 뭘 하려는지 크기 (가장 큰 것부터 가장 작은 것까지)로 출력 결과를 정렬하는 것입니다.

file1 
file2 
file3 
file4 
file5 
file6 

내 코드는 다음과 같습니다 :

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

하지만 그 대신 출력이 정렬되지 않습니다

는 내가 포함 file.txt를있다.

출력은 파일의 경로 (위대함)와 파일의 크기와 동일한 순서로 표시됩니다. 예를 들어

:

128 /dir1/file1 
8 /dir2/file2 
0 file3 
4 file4 
... 
and so on 
+0

귀하의 루프는 텍스트 파일의 각 줄에서 작동합니다. 따라서 텍스트 파일의 순서대로 'sort'1 파일을 매번 전달합니다. 미안하지만 해결 방법을 제안 할 수는 없지만 그 일이 어떻게 진행되는지 이해하는 데 도움이 되길 바랍니다. 나는 배열이 도움이 될 것 같아요. http://stackoverflow.com/questions/10981439/reading-filenames-into-an-array – JeffUK

답변

0

find에 대한 귀하의 호출은 다음 sort에 보내 각 파일에 대해 하나의 행을 인쇄합니다. sort은 호출 할 때마다 한 줄만 가져 오므로 정렬 할 항목이 없으므로 파일은 file.txt에 나열된 순서대로 출력됩니다.

대신, 파이프 sort에 전체 루프의 출력은 :

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

고맙습니다. 당신은 매우 도움이되었습니다 :) – Alexander

관련 문제