ডিরেক্টরিতে কীভাবে নতুন ডিরেক্টরিগুলি উপ-ডিরেক্টরি সহ সন্ধান করবেন?


12

আমি উইন্ডোজে একটি প্রদত্ত ডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলিতে সমস্ত ফাইল তালিকাভুক্ত করার জন্য একটি সন্ধান করছি, যাতে সর্বাধিক নতুন ফাইলগুলি শীর্ষে থাকে। এটি করার কোনও সহজ উপায় আছে? আমি পার্ল স্ক্রিপ্টের জন্য বন্দোবস্তও করতাম।

উত্তর:


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>


ধন্যবাদ। আমার ধারণা এটি যদি এই দিকে যায় তবে এটি একটি স্ট্যাকওভারফ্লো প্রশ্ন হওয়া উচিত ছিল। :)
কিপ

1
আমি কিছু পরিবর্তন করেছি (যার জুড়ে এটি আসতে চাইলে তার সহায়তার জন্য): my $dir = ($#ARGV >= 0 ? $ARGV[0] : '.');যাতে ডিরেক্টরি প্যারামিটারটি দেওয়া না হলে এটি বর্তমান দির স্ক্যান করে এবং মুদ্রিত সময়টি অন্তর্ভুক্ত করতে:print strftime('%Y-%m-%d %H:%M:%S', localtime((stat($key))[9])) . " $key\n";
কিপ

1
@ কিপ, আপনি $files{$key}যদি strftimeদ্বিতীয় কলটি এড়াতে মুদ্রণের সময় এটি ব্যবহার করতে চান তবে এমটাইমটি সংরক্ষণ করা উচিত stat()। আপনি যদি এটি অন্য কোনও প্রোগ্রামে পাইপ করার পরিকল্পনা করেন, তবে ফাইলনামগুলির সম্পূর্ণ পথ প্রদর্শন করতে আমি এটিও সংশোধন করেছি। আপনি এটি এখানে দখল করতে পারেন: পেস্টবিন.সিএ
জন টি

ধন্যবাদ, আপনি আমার চেয়ে দ্রুত স্টেট কমান্ড কেবলমাত্র বর্তমান ডিরেক্টরিতে ফাইলগুলির জন্য কাজ করেছে, আপনি কেবল ফাইল নামের শেষ অংশটি সংরক্ষণ করছেন।
কিপ করুন

7

এটার মত: dir /s /o:-d


1
হুম ... বেশ আদর্শ নয়, এটি প্রতিটি ডিরেক্টরি পৃথকভাবে তালিকাভুক্ত করে তবে আমি এটিতে কাজ করতে পারি
কিপ

5

আপনার যদি সাইগউইন বা অনুরূপ ইনস্টল থাকে তবে find . -type f | xargs ls -trকৌশলটি করবেন। আপনি প্রায় অবশ্যই মাইক্রোসফ্টের পাওয়ারশেলের সাথে একই কাজ করতে পারেন।


3

আপনি যদি সমস্ত কিছু ব্যবহার করছেন , কেবলমাত্র পথটি টাইপ করুন এবং তারিখ সংশোধিত অনুসারে বাছাই করুন এবং আপনি এই ফোল্ডারে সমস্ত ফাইল উপ-ডিরেক্টরিকে নির্বিশেষে পাবেন order

সবকিছু ফ্রিওয়্যার, একটি বহনযোগ্য সংস্করণ উপলব্ধ।


1

যদি আপনার কোডিং আপত্তি না মনে হয় (যদিও এটি প্রশ্নটিকে স্ট্যাক ওভারফ্লো প্রদেশে নিয়ে যায়) তবে সি # তে Directoryএবং Fileক্লাসগুলি রয়েছে।

GetFilesপদ্ধতি একটি জমিদার যে সমস্ত সাব-সমস্ত ফাইলের নামের ফিরে আসবে হয়েছে। তারপরে আপনি এই তালিকাটি লুপ GetLastWriteTimeকরতে পারেন, পরিবর্তিত তারিখ / সময় পেতে কল করে। একটি অভিধানে নাম এবং সময় সঞ্চয় করুন, সময় অনুসারে বাছাই করুন এবং ফাইলের নামগুলি মুদ্রণ করুন।

এখানে DirectoryInfoএবং FileInfoক্লাসগুলিও রয়েছে।

আমার যুক্ত করা উচিত ছিল যে এই সমস্ত কার্যকারিতা পাওয়ারশেলের মাধ্যমে উপলব্ধ , যাতে আপনার একটি পূর্ণ আইডিই অ্যাক্সেস না থাকে।


ধন্যবাদ। মূলত জাভাতে হলেও আমি বিকাশকারী। আমি এখানে জিজ্ঞাসা করছিলাম শেল বিকল্প পাওয়া যাবে এই আশা করে
কিপ

@ কিপ - আমি লগ আউট করার পরে গত রাতে আমি বুঝতে পেরেছিলাম যে আমার পাওয়ারশেল - টেকনিকট.মাইক্রোসফটকম /en-us/scriptcenter/dd742419.aspx - উল্লেখ করা উচিত ছিল - এটি একটি স্ক্রিপ্টিং ভাষা তবে আপনার নেট নেটটাইমে অ্যাক্সেস রয়েছে।
ক্রিসএফ

1

আপনার যদি গিট বাশ বা সাইগউইনের মতো কিছু ইনস্টল করা থাকে তবে আপনার উত্তরগুলি এখানে থেকে ব্যবহার করতে সক্ষম হওয়া উচিত: /programming/4561895/how-to-recursively-find-the-latest- Modified -file-ইন-এ-ডিরেক্টরি

আমার পক্ষে যে ভাল কাজ করেছে তা হ'ল: find . -type f -printf '%TF %TT %p\n' | sort -r

| head -10সাম্প্রতিক 10 টি দেখতে আপনি এটির শেষেও যুক্ত করতে পারেন, বলুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.