명령 기본 정렬 순서 찾기 들어, 내가 발행하면

linux find 명령으로 반환 된 항목의 기본 정렬 순서는 무엇입니까?

예를 들어, 내가 발행하면

find . -type f -name '*mp3'

출력은 여러 하위 폴더에 걸쳐 여러 파일로 구성되며 디렉토리가 나열되는 기본 순서는 무엇입니까? 동시에 개별 디렉토리 내의 파일이 나열되는 정렬 순서는 무엇입니까?

때로는 다음을 반환합니다.

./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3

디렉토리 B의 내용이 먼저 나열되고 그 다음 디렉토리 A의 내용이 어떻게 나열되는지 확인하십시오. 디렉토리 A 내에서 동시에 파일은 재미있는 순서로 나열됩니다.



답변

find항목이 디렉토리 항목 내에 저장된 순서대로 디렉토리 트리를 순회합니다. 이것은 대부분 같은 머신에서 실행마다 일관되며 삭제가없는 경우 본질적으로 “파일 / 디렉토리 작성 순서”입니다.

그러나 일부 파일 시스템은 압축 작업의 일부로 또는 항목 크기를 확장해야 할 때 디렉토리 항목의 순서를 다시 지정하므로 시간이 지남에 따라 “원시”순서가 변경 될 가능성은 항상 적습니다. 일관된 순서를 원하면 추가 정렬 단계를 통해 출력물을 공급하십시오.


답변

특정 출력 순서에 의존해서는 안되며 find대신 순서 sort를 구체적으로 제어하기 위해 다른 수단을 사용해야합니다 .


답변

저는 1984/1991 년부터 유닉스 / 리눅스에서 각각 일해 왔으며 제가 처음으로 배운 명령은 찾기였습니다. Linux / GNU는 현재 find 명령에 필요한 모든 것을 넣었으므로 함께 사용하십시오.

찾기 출력을 정렬하는 데 유용한 팁이 있습니다. -printf 옵션은보다 복잡한 정렬 및 파일 정보 표시를 가능하게하는 많은 옵션을 제공합니다. 이와 같은 문제에 가장 적합합니다. 함께 작동하여 무엇이 효과가 있는지 확인하십시오. -printf를 사용하면 원하는 방식으로 결과를 사용자 정의하고 구분할 수 있습니다. 결과를 포스트 프로세스해야 할 때 상당히 도움이됩니다. 나는 이것이 누군가를 돕기를 바랍니다.

  1. -ls를 사용하고 파일 이름을 기준으로 정렬하려는 경우 11 번째 필드는 파일 이름이므로 다음을 수행 할 수 있습니다. sort -k 옵션은 여러 필드를 정렬 할 수도 있습니다.

    / path -ls 찾기 | 정렬 -k11

  2. 날짜 / 시간을 기준으로 오름차순 또는 내림차순으로 더 미세한 입자 컨트롤을 원하면 -printf “”옵션을 사용하십시오. 자세한 내용은 설명서를 참조하십시오. 다음은 초 단위로 인쇄되므로 매우 정확합니다.

예시 날짜 / 시간 : 2016-09-17 + 12 : 09 : 57.9013929800

find /path -printf "%T+ %p\n" | sort -n # Ascending

find /path -printf "%T+ %p\n" | sort -nr # Descending

날짜 / 시간 문자열에 문자없이이 작업을 수행하는 다른 방법이 있습니다.

예시 날짜 / 시간 : 20160917120013.8101685040

find /path -printf "%AY%Am%Ad%AH%AM%AS %p\n" | sort -n


답변