ฉันกำลังมองหาวิธีใน Windows เพื่อแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีที่กำหนดและไดเรกทอรีย่อยเรียงลำดับเพื่อให้ไฟล์ใหม่ล่าสุดอยู่ด้านบน มีวิธีง่าย ๆ ในการทำเช่นนี้? ฉันต้องการชำระด้วยสคริปต์ Perl
ฉันกำลังมองหาวิธีใน Windows เพื่อแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีที่กำหนดและไดเรกทอรีย่อยเรียงลำดับเพื่อให้ไฟล์ใหม่ล่าสุดอยู่ด้านบน มีวิธีง่าย ๆ ในการทำเช่นนี้? ฉันต้องการชำระด้วยสคริปต์ Perl
คำตอบ:
หากคุณยังคงสนใจในโซลูชันสคริปต์ฉันได้โยนบางอย่างเข้าด้วยกันอย่างรวดเร็วซึ่งจะแสดงไฟล์จากไดเรกทอรีทั้งหมดเข้าด้วยกัน:
#!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>
my $dir = ($#ARGV >= 0 ? $ARGV[0] : '.');
เพื่อให้มันจะสแกน dir ปัจจุบันหากไม่ได้ระบุพารามิเตอร์ไดเรกทอรีและรวมเวลาที่พิมพ์:print strftime('%Y-%m-%d %H:%M:%S', localtime((stat($key))[9])) . " $key\n";
$files{$key}
ถ้าคุณต้องการที่จะใช้ว่าเมื่อพิมพ์เพื่อหลีกเลี่ยงสายที่สองไปstrftime
stat()
หากคุณวางแผนที่จะวางท่อไปยังโปรแกรมอื่นฉันได้ปรับเปลี่ยนเพื่อแสดงเส้นทางแบบเต็มของชื่อไฟล์ คุณสามารถคว้าได้ที่นี่: pastebin.ca/1797748
แบบนี้: dir /s /o:-d
หากคุณมี cygwin หรือติดตั้งที่คล้ายกันแล้วfind . -type f | xargs ls -tr
จะทำเคล็ดลับ คุณเกือบจะสามารถทำสิ่งที่คล้ายกับ PowerShell ของ Microsoft ได้อย่างแน่นอน
ในกรณีที่คุณใช้ทุกอย่างเพียงพิมพ์พา ธ และเรียงลำดับตามวันที่แก้ไขและคุณจะได้รับไฟล์ทั้งหมดในโฟลเดอร์นี้ตามลำดับโดยไม่คำนึงถึงไดเรกทอรีย่อย
ทุกอย่างเป็นฟรีแวร์มีรุ่นพกพาให้ใช้
หากคุณไม่สนใจการเขียนโค้ด (แม้ว่าจะนำคำถามไปสู่สแต็คโอเวอร์โฟลว์ดินแดน) ก็มีDirectory
และFile
คลาสใน C #
GetFiles
วิธีมีเกินที่จะกลับมาทุกไฟล์ในไดเรกทอรีย่อยทั้งหมด จากนั้นคุณสามารถวนซ้ำรายการนี้เรียกGetLastWriteTime
เพื่อรับวันที่ / เวลาที่แก้ไข จัดเก็บชื่อและเวลาในพจนานุกรมเรียงลำดับเวลาและพิมพ์ชื่อไฟล์
นอกจากนี้ยังมีDirectoryInfo
และFileInfo
ชั้นเรียน
ฉันควรจะเพิ่มว่าฟังก์ชั่นทั้งหมดนี้สามารถใช้ได้ผ่านPowershellดังนั้นคุณจึงไม่สามารถเข้าถึง IDE แบบเต็ม
หากคุณมีบางอย่างเช่น Git Bash หรือ Cygwin ติดตั้งคุณควรใช้คำตอบอย่างใดอย่างหนึ่งจากที่นี่: /programming/4561895/how-to-recursively-find-the-latest-modified แฟ้ม: หนึ่งในไดเรกทอรี
สิ่งหนึ่งที่ทำงานได้ดีสำหรับฉันคือ: find . -type f -printf '%TF %TT %p\n' | sort -r
นอกจากนี้คุณยังสามารถเพิ่ม| head -10
ในส่วนท้ายเพื่อดูเฉพาะ 10 รายการล่าสุดได้