디렉터리와 하위 디렉터리의 모든 파일을 시간 역순으로 어떻게 나열합니까?
문제
나는 다음과 같은 것을하고 싶다 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 **/*
-d
의 ls
인수는 인수로 전달 된 디렉토리를 되돌릴 수 없게합니다 (쉘 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