development

디렉터리 및 하위 디렉터리의 모든 파일을 시간 역순으로 나열하려면 어떻게합니까?

big-blog 2020. 12. 28. 22:28
반응형

디렉터리 및 하위 디렉터리의 모든 파일을 시간 역순으로 나열하려면 어떻게합니까?


나는 같은 일을하고 ls -t싶지만 하위 디렉토리에 파일이 포함되어 있습니다. 그러나 문제는 다음과 같은 형식의 출력을 원하지 ls -R않는다는 것입니다.

[test]$ ls -Rt
b       testdir test

./testdir:
a

find명령이 하위 디렉토리에 파일을 표시하는 것처럼 포맷되기를 원합니다 . 즉 :

[test]$ find .
.
./b
./test
./testdir
./testdir/a

그러나 find하지 않는 것은 마지막 업데이트 시간을 기준으로 결과를 시간순으로 정렬하는 것입니다.

그렇다면 디렉토리 및 하위 디렉토리의 모든 파일을 해당 형식으로 find시간 역순으로 나열하려면 어떻게해야합니까?


이걸로 해봐:

find . -type f -printf "%T@ %p\n" | sort -nr | cut -d\  -f2-

ls -lR홈 디렉토리의 모든 파일, 디렉토리 및 하위 디렉토리 ls -lR | more를 표시하는 것은 흐름의 모든 파일을 표시하는 데 사용됩니다.


보려는 파일 수가 최대 인수 제한에 맞으면 globstar를 지원하는 경우 재귀를 사용하여 원하는 것을 얻기 위해 globbing을 사용할 수 있습니다.

정확히 2 개의 레이어 깊이 사용 : ls -d * */*

globstar를 사용하여 재귀 사용 : ls -d **/*

-d에 인수 ls(당신이 재귀를 수행하는 글 로빙 쉘을 사용하고 있기 때문에) 인수로 전달 디렉토리를 재귀하지 말 것을 알려줍니다. 이렇게하면 ls재귀 형식을 사용할 수 없습니다.


find -type f -print0 | xargs -0 ls -t

단점 : 특정 양의 파일에만 작동합니다. 너무 많은 양의 파일이있는 경우 더 복잡한 것이 필요합니다.


시도 find . -type d하거나find . -type d -ls


이 시도:

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total' |sed '/^$/d'

wfg5475의 대답 에있는 명령 은 제대로 작동합니다. 디렉토리 및 하위 디렉토리의 파일 만 표시하려면 한 가지만 추가하면됩니다.

ls -ltraR |egrep -v '\.$|\.\.|\.:|\.\/|total|^d' |sed '/^$/d'

한 가지 추가 : ^d목록 출력에서 ​​모든 디렉토리 무시

참조 URL : https://stackoverflow.com/questions/4909751/how-do-i-list-all-the-files-in-a-directory-and-subdirectories-in-reverse-chronol

반응형