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

StackOverflow https://stackoverflow.com/questions/4909751

  •  29-10-2019
  •  | 
  •  

문제

나는 다음과 같은 것을하고 싶다 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 지원이있는 경우 재귀와 함께 WLOLLBING을 사용하여 원하는 것을 얻을 수 있습니다.

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

globstar, 재귀 사용 : ls -d **/*

-dls 인수는 인수로 전달 된 디렉토리를 되돌릴 수 없게합니다 (쉘 Globbing을 사용하여 재귀를 수행하도록 사용하므로).이렇게하면 재귀 서식을 사용하여 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'
.

가 추가되었습니다. Listing 출력에서 모든 디렉토리를 무시하기위한 ^d

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top