想要按更新日期对文件(包括子目录)进行排序

想要按更新日期对文件(包括子目录)进行排序

업데이트된 날짜별로 파일(하위 디렉터리 포함)을 정렬하고 싶습니다.

나는 ls -lrtR | grep ^-. 하지만 업데이트 날짜별로 정렬되지 않는 것 같습니다.

이 목록을 파일로 저장해야 합니다. 가능합니까?

Apr 01 2010  InsideDoosanServiceImpl.class  // in A directory
Apr 08 2010  MainController.class  // in B directory
Apr 07 2010  RecommendController.class  // in B directory
Apr 01 2010  MainDao.class  // in B directory

내 말은 전체 목록이 날짜별로 정렬되지 않고 먼저 폴더별로 정렬된 다음 날짜별로 정렬된다는 것입니다.

모든 하위 디렉터리를 포함하여 먼저 날짜별로 목록을 정렬하고 싶습니다.

답변1

ls를 사용하면 -R은 디렉토리로 재귀하고 -t는 수정 사항을 기준으로 정렬합니다. 그러나 디렉터리를 재귀적으로 순회하며 각 디렉터리에 -t를 적용합니다. 모든 디렉토리의 모든 파일을 모아서 정렬하지는 않습니다. (제가 이해한 바로는 후자가 원하는 것입니다)

gnu find(1)을 사용하면 에포크 이후의 초 수와 파일 이름을 포함하도록 출력 형식을 지정할 수 있으며, 그런 다음 이를 sort(1)로 파이프할 수 있습니다.

find . -type f -printf "%T@ %f\n" | sort -n > out.txt

답변2

정확히 무슨 뜻인지는 모르겠지만 사람에 따라 옵션을 update dates사용하고 있습니다 .-r

-r 사전식 역순을 가져오거나 가장 오래된 항목을 먼저 가져오려면 정렬 순서를 반대로 바꿉니다(또는 크기별 정렬과 함께 사용하는 경우 가장 큰 파일을 마지막으로 가져옵니다).

시간별로 정렬된 파일이 필요하다면 이 정도면 충분할 것 같습니다.

ls -lRt

나열된 다른 모든 항목이 필요하지 않은 경우 ls다음을 사용할 수 있습니다.

ls -1Rt

要将结果捕获到文件中,您可以使用重定向运算符>并指定文件名。所以你可以做这样的事情 -

ls -lRt > sortedfile.list

更新:

find . -type f -exec ls -lt {} +

这将对文件进行排序,以便首先列出最新的文件。要反转排序顺序,在末尾显示最新文件,请使用以下命令:

find . -type f -exec ls -lrt {} +

관련 정보