마지막으로 편집 한 날짜별로 파일 나열


104

디렉토리가 있습니다. /home/user/

이 디렉토리에있는 모든 파일 (하위 디렉토리에있는 파일 포함)을 나열하고 마지막으로 수정 된 날짜별로 정렬하려면 어떻게해야합니까?

답변:


172

당신이 사용할 수있는:

ls -Rt

어디 -R수단 재귀 와 (하위 디렉토리 포함) -t"일종의 마지막으로 수정 한 날짜"라는 뜻입니다.


수정 된 날짜별로 정렬 된 파일 목록을 보려면 다음을 사용하십시오.

ls -l -Rt

이를 위해 별칭을 만들 수도 있습니다.

alias lt='ls -lht'
lt

어디는 -h보다 읽기 쉬운 출력을 제공합니다.


16
감사합니다. 완벽합니다. 나는 거기에 -l을 추가하여 실제로 날짜를 볼 수 있으므로 나중에 이것을 검색하는 사람에게는
Marty

4
프롬프트에서이 작업을 수행하고 가장 최근에 수정 된 파일을 보려면 ls -lrt[RhA]. 는 -r... 목록의 맨 아래에 최근에 편집 물건을두고 정렬 순서를 반전
dmckee --- 전 사회자 고양이

이것은 -ila당신에게 필요한 거의 모든 정보를 제공합니다. $ ls -ilaRt
Falkenfighter 2013-08-14

ll -Rt가장 최근에 수정 된 날짜별로 파일을 확인해야 했기 때문에 사용 이 완벽한 솔루션 이었기 때문에이 답변을 확장했습니다 . 이것은 다른 사람들에게 도움이 될 수 있습니다.
Mus

@MusTheDataGuy ll는 존재하지 않으며 명령이 아닙니다. 대부분 bash 셸의 별칭이지만 most / some /? 리눅스 배포판. 일부는 그것을 alias ll='ls -l'/etc/bash.bashrc 또는 /etc/.bashrc에서 정의합니다 . 따라서 작동하지 않을 수 있으며 OP 시스템에 존재하지 않을 수 있습니다. ls -l -Rt적어도 lsposix에 정의 된 표준 명령을 사용하십시오 . 또는 의미를 지정하십시오 alias ll='ls -l'; ll -Rt.
KamilCuk

73

모든 파일 을 수정 날짜 별로 정렬 하여 파일이 있는 디렉토리를 표시하지만 디렉토리별로 그룹화하지 않은 마스터 목록을 원하는 경우 다음 을 사용할 수 있습니다.

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

결과는 다음과 같습니다. ls -l .

-rw-r--r-- 1 루트 루트 3892 08/11/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz
-rw-r--r-- 1 루트 루트 22946 08/13/2009 11:59:20 /usr/share/man/man1/curl.1.gz
-rw-r--r-- 1 루트 루트 728 08/17/2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz
-rw-r--r-- 1 루트 루트 873 08/18/2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz
-rw-r--r-- 1 루트 루트 2552 2009-08-19 02:00:34 /usr/share/man/man3/Purple.3pm.gz
-rw-r--r-- 1 루트 루트 9546 2009-08-19 02:02:00 /usr/share/man/man1/pidgin.1.gz
-rw-r--r-- 1 루트 루트 2201 08/19/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz
-rw-r--r-- 1 루트 루트 926 08/19/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz
-rw-r--r-- 1 루트 루트 18052 08/19/2009 04:11:47 /usr/share/man/man1/mono.1.gz
-rw-r--r-- 1 개의 루트 루트 1845 08/19/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz

맥 OS X

Mac OS X을 사용하는 사용자의 경우 BSD find에서 -printf 옵션을 사용할 수 없습니다 (이 오류가 발생합니다 :)find: -printf: unknown primary or operator . 다행스럽게도 Homebrew를 통해 GNU를 설치할 수 있습니다 ( FinkMacports에 대한 옵션도 있어야 함 ).

brew install findutils

설치 후 GNU 찾기를 gfind. 따라서 위의 줄을 다음과 같이 변경하기 만하면됩니다.

gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

3
멋지네요. ls -R을 사용한 전체 디렉토리 그룹화는 성가신 일입니다.
El Yobo

1
훌륭한 코드, 대략 스크립트가 필요했습니다. 매우 느린 컴퓨터에서 Cygwin을 통해 다양한 폴더에있는 13k 사진을 정렬하고 인쇄하는 데 5 초가 걸립니다.
Magnus

오 이제 굉장합니다. find저자 만큼 친숙하지 않은 사람들 (나와 같은)의 경우 이러한 인수 -printfman find( printf해당 페이지에서 의 다섯 번째 인스턴스 검색) 에서 찾을 수있는 형식 지시문입니다 .
Owen Blacker 2013

4
MacOS에서이 기능을 사용하고 싶지만 findutils를 설치하는 것을 원하지 않는 사람을 위해 : find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' '내장 유틸리티 만 사용하여 MacOS에서 거의 동일한 출력을 제공합니다
Jaymon

sort -r정렬을 반대로하고 가장 최근에 수정 된 파일을 맨 위에 표시합니다.
maryisdead

0

MAC OSX 2019

언제 생성되었는지 신경 쓰지 않지만 목록을 정렬하려면 다음 명령을 사용하십시오.

==> ls -t

주문하고 날짜 및 사용자 정보를 보려면이 명령을 사용하십시오.

===> ls -lt


0

를 들어 zsh사용자, 당신은 또한 사용할 수 글로브 한정자를 (또한 문서화 man zshexpn) :

echo *(om)

어디는 o의미 , 정렬 순서까지m의 약자 최종 수정 시간 .

이것은 for 루프 또는 다른 명령에서 사용할 때 유용 할 수 있습니다.

for file in *(^om); do
  [ -e "$file" ] || continue
  # do something with file orderer from least recently modified to last modified
done

또는 다른 glob 한정자와 연결 :

last_modified_file=(*(om[1]))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.