하위 디렉토리를 포함하여 디렉토리에서 최신 파일을 찾는 방법은 무엇입니까?


11

Windows에서 주어진 디렉토리와 하위 디렉토리의 모든 파일을 최신 파일이 맨 위에 오도록 정렬하는 방법을 찾고 있습니다. 이 작업을 수행하는 쉬운 방법이 있습니까? 나는 또한 Perl 스크립트에 정착했다.

답변:


3

여전히 스크립트 솔루션에 관심이 있다면 모든 디렉토리의 파일을 함께 표시하는 무언가를 빨리 던졌습니다.

#!C:/Perl/bin/perl.exe
use File::Find;

my %files = ();

sub process
{
    $files{$_} = (stat($_))[9] unless -d $_;
}

find (\&process, $ARGV[0]);

foreach my $key(sort {$files{$b} <=> $files{$a}} keys %files)
{
    print "$key\n";
}

파일은 파일 이름 만 표시하여 최신에서 가장 오래된 것으로 표시됩니다. 이렇게하면 초과 출력을 제거 할 필요없이이 스크립트의 출력을 처리를 위해 다른 도구로 쉽게 파이프 할 수 있습니다.

용법: perl find.pl <starting_directory>


감사. 이 방향으로 가면 이것이 stackoverflow 질문이었을 것 같아요. :)
Kip

1
내가 만든 몇 가지 변경 사항 (이 문제를 겪는 사람을 돕기 위해) : my $dir = ($#ARGV >= 0 ? $ARGV[0] : '.');디렉토리 매개 변수가 제공되지 않은 경우 현재 dir을 스캔하고 인쇄 된 시간을 포함하도록합니다.print strftime('%Y-%m-%d %H:%M:%S', localtime((stat($key))[9])) . " $key\n";
Kip

1
@Kip,에 대한 두 번째 호출을 피하기 위해 인쇄 할 때 mtime $files{$key}을 사용 하려면 mtime을 저장해야합니다 . 다른 프로그램으로 파이프 연결하려는 경우 파일 이름의 전체 경로를 표시하도록 수정했습니다. 당신은 여기에 잡아 수 있습니다 pastebin.ca/1797748strftimestat()
존 T

고마워, 당신은 나보다 빠르다. stat 명령은 파일 이름의 마지막 부분 만 저장했기 때문에 현재 디렉토리의 파일에 대해서만 작동했습니다.
Kip

7

이처럼 : dir /s /o:-d


1
흠 ... 아주 이상적이지는 않지만 여전히 각 디렉토리를 개별적으로 나열하지만 그 디렉토리로 작업 할 수 있습니다.
Kip

5

cygwin 또는 이와 유사한 제품이 설치되어 있으면 find . -type f | xargs ls -tr트릭을 수행합니다. 거의 확실하게 Microsoft의 powershell과 비슷한 작업을 수행 할 수 있습니다.


3

Everything을 사용하는 경우 경로를 입력하고 수정 날짜 별로 정렬 하면 하위 디렉토리에 관계 없이이 폴더의 모든 파일을 해당 순서대로 가져옵니다.

모든 것이 프리웨어이며 휴대용 버전을 사용할 수 있습니다.


1

코딩이 마음에 들지 않으면 (스택 오버플로 영역에 문제가 생길지라도) C # 에는 클래스 DirectoryFile클래스가 있습니다.

GetFiles메소드에는 모든 서브 디렉토리의 모든 파일 이름을 리턴하는 과부하가 있습니다. 그런 다음 GetLastWriteTime수정 된 날짜 / 시간을 얻기 위해 호출하여이 목록을 반복 할 수 있습니다 . 사전에 이름과 시간을 저장하고 시간을 정렬하여 파일 이름을 인쇄하십시오.

DirectoryInfoFileInfo클래스 도 있습니다.

Powershell 을 통해이 기능을 모두 사용할 수 있으므로 전체 IDE에 액세스 할 수 없습니다.


감사. 나는 주로 자바에서 개발자입니다. 쉘 옵션을 사용할 수 있기를 바라고 여기에 요청했습니다
Kip

@Kip-Powershell ( technet.microsoft.com/en-us/scriptcenter/dd742419.aspx) 을 언급해야한다는 로그 아웃 후 지난 밤에 깨달았습니다.이 언어는 스크립팅 언어이지만 .NET 런타임에 액세스 할 수 있습니다.
ChrisF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.