কীভাবে পুনরুক্তরূপে উপ ডিরেক্টরি এবং সময় সহ একটি ডিরেক্টরিতে সর্বশেষ পরিবর্তিত ফাইলগুলি সন্ধান এবং তালিকাভুক্ত করবেন?


417
  • অপারেটিং সিস্টেম: লিনাক্স

  • ফাইল সিস্টেমের ধরণ: ext3

  • পছন্দসই সমাধান: বাশ (স্ক্রিপ্ট / অনেলাইনার), রুবি, পাইথন

আমার বেশ কয়েকটি ডিরেক্টরি রয়েছে যার মধ্যে বেশ কয়েকটি উপ-ডিরেক্টরি এবং ফাইল রয়েছে। আমাকে এই সমস্ত ডিরেক্টরিগুলির একটি তালিকা তৈরি করতে হবে যা এমনভাবে তৈরি করা হয় যাতে প্রতিটি প্রথম স্তরের ডিরেক্টরি এটির মধ্যে সর্বশেষ নির্মিত / সংশোধিত ফাইলের তারিখ এবং সময়ের পাশে তালিকাভুক্ত হয়।

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

./alfa/beta/gamma/example.txt

এবং আমি ফাইলের বিষয়বস্তুগুলি সংশোধন করি example.txt, আমার সেই সময়টি প্রথম alfaপর্বের ডিরেক্টরিটি মানব পাঠযোগ্য ফর্মের পরবর্তী সময়ে প্রদর্শিত হবে , মহাকাব্য নয়। আমি খুঁজে বার করে কিছু জিনিস চেষ্টা করেছি xargs, sortএবং পছন্দগুলি কিন্তু আমি প্রায় সমস্যা যে 'আলফা' এর ফাইল সিস্টেম টাইমস্ট্যাম্প পরিবর্তন করে না যখন আমি তৈরি / নীচের ফাইল কয়েকটি স্তরের খেলা আসলেই সংশোধন পেতে পারে না।


আপনি যদি এটির নির্মাণের ব্যথা নিতে পারেন তবে github.com/shadkam/recentmost ব্যবহার করা যেতে পারে।
ব্যবহারকারী 3392225

4
অবিশ্বাস্য। ১ answers টি উত্তর, এবং বেশিরভাগ / সবাই ওপি যা নির্দিষ্ট করেছে তা করার চেষ্টাও করে না ...
হিমেজাইল শোক করে পুনর্জীবনী

কোনও-আর স্যুইচের মতো সমাধানের পরিবর্তে আমি এখানে কেবল বাল্ক দেখি।
কখনই মন 9

একটি স্থানীয় বৈশিষ্ট্য হওয়া উচিত।
neverMind9

উত্তর:


486

আর একবার চেষ্টা কর:

#!/bin/bash
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head

ডিরেক্টরিটি যেখানে এটি পুনরাবৃত্তি স্ক্যান শুরু করা উচিত পাথ দিয়ে এটি কার্যকর করুন (এটি স্পেস সহ ফাইলের নাম সমর্থন করে)।

যদি প্রচুর ফাইল থাকে তবে এটি কিছু ফেরত দেওয়ার আগে কিছুটা সময় নিতে পারে। xargsপরিবর্তে আমরা ব্যবহার করলে পারফরম্যান্স উন্নত করা যায়:

#!/bin/bash
find $1 -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

যা কিছুটা দ্রুত।


132
আপনার "দ্রুত পদ্ধতি" ফাইলের নামগুলিতে স্থান এবং এমনকি লাইনফিডগুলি সমর্থন করতে মুদ্রণ0 ব্যবহার করতে সক্ষম হওয়া উচিত। আমি যা ব্যবহার করি তা এখানে: find $1 -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head এটি এখনও আমার পক্ষে দ্রুত হতে পারে।
ড্যান

20
ম্যাক ওএস এক্সে এটি জিএনইউ'র স্ট্যাটাস নয় তাই কমান্ড ব্যর্থ হয়। যা শুরু করেছো brew install coreutilsএবং ব্যবহারের gstatপরিবর্তেstat
CharlesB

36
কাজটি করার statপর থেকে আপনাকে চালানোর দরকার find PATH -type f -printf "%T@ %p\n"| sort -nrনেই। এটিও সেভাবে কিছুটা দ্রুত।
NR

4
আমরা কি কোনওভাবে @ ব্যবহারকারী37078 এর মন্তব্যকে একটি আসল উত্তরে পরিণত করতে পারি বা মূল উত্তরটি সম্পাদনা করতে পারি? এটি করার জন্য এটি "সঠিক উপায়" বলে মনে হচ্ছে [টিএম]।
mnagel

6
ম্যাক ওএস এক্সে, জিস্ট্যাট বা অন্য কোনও কিছু ইনস্টল না করে আপনি এটি করতে পারেন:find PATH -type f -exec stat -f "%m %N" "{}" \; | sort -nr | head
কোবজিলা

198

N মিনিট আগে ফাইলের স্থিতি সর্বশেষ পরিবর্তন করা হয়েছিল এমন সমস্ত ফাইল সন্ধান করতে :

find -cmin -N

উদাহরণ স্বরূপ:

find -cmin -5


4
+1 ধন্যবাদ, খুব দরকারী। উইন্ডোতে GnuWin32 অনুসন্ধান ব্যবহার করে কাজ করে।
সাবুনকু

খুব সংক্রামক খুব সুন্দর!
র‌্যান্ডি এল

এটি অন্যান্য জটিল সমাধানগুলির চেয়ে দ্রুততর
ডেভিড.প্রেজ

20
সত্যিই ভাল, আপনি পরিবর্তনের শেষ 50 দিনের জন্য উদাহরণস্বরূপ 'ফাইন্ড -কালাইম -50' ব্যবহার করতে পারেন।
গর্কেম

1
বিশৃঙ্খলা বাদ দেওয়ার জন্য, ব্যবহার করুনsudo find -cmin -1 2>&1 |grep -v /proc/
সিস টিমারম্যান

39

জিএনইউ ফাইন্ড (দেখুন man find) -printfফাইলগুলি EPOC এমটাইম এবং আপেক্ষিক পাথের নামটি প্রেরণ করার জন্য একটি প্যারামিটার রয়েছে ।

redhat> find . -type f -printf '%T@ %P\n' | sort -n | awk '{print $2}'

3
ধন্যবাদ! যুক্তিযুক্ত সময়ে আমার খুব প্রশস্ত ডিরেক্টরি কাঠামোটি অনুসন্ধান করার জন্য এটি কেবলমাত্র একমাত্র উত্তর। আউটপুটটিতে কয়েক tailহাজার লাইন মুদ্রিত হতে আটকাতে আমি আউটপুটটি পাস করি ।
এসএফসিসি

8
আরেকটি মন্তব্য: awk '{print $2}'খালি জায়গাগুলির ফাইল নাম থাকলে অংশটি সমস্যা দেখা দেয়। sedপরিবর্তে এখানে একটি সমাধান ব্যবহার করা হচ্ছে, এবং এটি পথের পাশাপাশি find . -type f -printf '%T@ %Tc %P\n' | sort -n | tail | sed -r 's/^.{22}//'
সময়টিও ছাপায়

3
আমি মনে করি এটি বাছাই করা উচিত
বোজন দেবী

2
প্রিন্টফ ভেরিয়েন্টটি প্রতিবার 'স্ট্যাট' প্রক্রিয়া কল করার চেয়ে দ্রুততর - এটি আমার ব্যাকআপ জব (গুলি) থেকে কয়েক ঘন্টা কেটে দেয় cut আমাকে এই সম্পর্কে সচেতন করার জন্য ধন্যবাদ। আমি জাজ / এসড জিনিসটি এড়িয়ে গেছি কারণ আমি কেবলমাত্র গাছের মধ্যে শেষ আপডেটের জন্যই উদ্বিগ্ন - তাই এক্স = $ (সন্ধান / পাথের ধরণের চ-প্রিন্টফ '% টি% পি \ n' | গ্রেপ-ভিভ-আই- ডন-টেকার-সম্পর্কে | সাজানো -এনআর | হেড-এন 1) এবং একটি প্রতিধ্বনি {{এক্স # * ""} আমার পক্ষে ভাল কাজ করেছে (আমাকে প্রথম স্থান পর্যন্ত জিনিসপত্র দিন)
ডেভিড গুডউইন

2
একাধিক লাইন জুড়ে ফাইলের নাম কাজ করে না। এই touch "lala<Enter>b"জাতীয় ফাইল তৈরি করতে ব্যবহার করুন। আমি ইউনিক্স ইউটিলিটি ডিজাইনের ফাইল নাম সম্পর্কে বড় ত্রুটি আছে বলে মনে করি।
ফল

35

আমি এই ওয়ান-লাইনারে হ্যালো এর দুর্দান্ত উত্তরটি সংক্ষিপ্ত করে দিয়েছি

stat --printf="%y %n\n" $(ls -tr $(find * -type f))

আপডেট হয়েছে : ফাইলের নামগুলিতে শূন্যস্থান থাকলে আপনি এই পরিবর্তনটি ব্যবহার করতে পারেন

OFS="$IFS";IFS=$'\n';stat --printf="%y %n\n" $(ls -tr $(find . -type f));IFS="$OFS";

এটি সম্পর্কে কীভাবে: আইএফএস = $ '\ n'; স্ট্যাটি - প্রিন্টফ = "% y% n \ n" $ (এলএস -tr $ (সন্ধান করুন -প্রকার চ))
স্ল্যাশডটটিয়ার

3
আপনার কাছে খুব বিশাল সংখ্যক ফাইল থাকলে এটি কাজ করবে না। xargs ব্যবহার করা উত্তরগুলি এই সীমাটি সমাধান করে।
কার্ল ভার্বিস্ট

@ কার্লবার্বিস্ট প্রকৃতপক্ষে প্রচুর সংখ্যক ফাইল স্ল্যাশডটটার সমাধান সমাধান করবে। এমনকি xargs- ভিত্তিক সমাধানগুলি তখন ধীর হবে। ব্যবহারকারী 2570243 এর সমাধান বড় ফাইল সিস্টেমগুলির জন্য সেরা।
স্টাফেন গরিখন

IFS=$'\n'ফাইলের নামগুলি পরিচালনা করার সময় কোনও ইভেন্টেই নিরাপদ নয়: ইউনিক্সের ফাইলনামগুলিতে নিউলাইনগুলি বৈধ অক্ষর। কেবল NUL চরিত্রটি কোনও পথে উপস্থিত না হওয়ার গ্যারান্টিযুক্ত।
চার্লস ডাফি

17

এটা চেষ্টা কর

#!/bin/bash
stat --format %y $(ls -t $(find alfa/ -type f) | head -n 1)

এটি findডিরেক্টরি থেকে সমস্ত ফাইল একত্রিত lsকরে, পরিবর্তনের তারিখ অনুসারে বাছাই করা তালিকার headজন্য, 1 ম ফাইলটি বাছাই করার জন্য এবং অবশেষে সময়টিকে statএকটি সুন্দর ফর্ম্যাটে দেখানোর জন্য ব্যবহার করে।

এই মুহুর্তে তাদের নামে সাদা জায়গা বা অন্যান্য বিশেষ অক্ষরযুক্ত ফাইলগুলির জন্য এটি নিরাপদ নয়। এটি আপনার চাহিদা পূরণ না হলে প্রশংসা লিখুন।


1
হ্যালো: আমি আপনার উত্তরটি পছন্দ করি, এটি ভাল কাজ করে এবং সঠিক ফাইলটি প্রিন্ট করে। আমার ক্ষেত্রে অনেকগুলি সাবলভেল রয়েছে বলে আমি তবে আমাকে সাহায্য করি না। সুতরাং আমি ls এর জন্য "আর্গুমেন্টের তালিকা খুব দীর্ঘ" পেয়েছি ... এবং xargs এই ক্ষেত্রেও সহায়তা করবে না। আমি অন্য কিছু চেষ্টা করব।
ফ্রেডরিক

সেক্ষেত্রে এটি কিছুটা জটিল এবং কিছু বাস্তব প্রোগ্রামের প্রয়োজন হবে। আমি কিছু পার্ল হ্যাক করব।
ড্যানিয়েল বুমার

1
পরিবর্তে পিএইচপি ব্যবহার করে এটি সমাধান করেছি। একটি পুনরাবৃত্ত ফাংশন যা ফাইল সিস্টেম ট্রি থেকে নেমে আসে এবং সর্বাধিক সংশোধিত ফাইলের সময় সঞ্চয় করে।
ফ্রেডরিক

11

এই কমান্ডটি ম্যাক ওএস এক্সে কাজ করে:

find "$1" -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

লিনাক্স উপর, যেমন মূল পোস্টার জিজ্ঞাসা করলেন, ব্যবহার statপরিবর্তে gstat

এই উত্তরটি অবশ্যই ব্যবহারকারীর 7070০78 s এর অসামান্য সমাধান, মন্তব্য থেকে পুরো উত্তরে প্রচারিত। আমি মিশিয়ে CharlesB এর ব্যবহার অন্তর্দৃষ্টি gstatউপর ম্যাক OS X আমি পেয়েছিলাম coreutils থেকে MacPorts বদলে homebrew , উপায় দ্বারা।

এবং ~/bin/ls-recent.shপুনরায় ব্যবহারের জন্য আমি কীভাবে এটি একটি সাধারণ কমান্ডে প্যাকেজ করেছি :

#!/bin/bash
# ls-recent: list files in a dir tree, most recently modified first
#
# Usage: ls-recent path [-10 | more]
# 
# Where "path" is a path to target directory, "-10" is any arg to pass
# to "head" to limit the number of entries, and "more" is a special arg
# in place of "-10" which calls the pager "more" instead of "head".
if [ "more" = "$2" ]; then
   H=more; N=''
else
   H=head; N=$2
fi

find "$1" -type f -print0 |xargs -0 gstat --format '%Y :%y %n' \
    |sort -nr |cut -d: -f2- |$H $N

2
ওএস এক্স ইয়োসেমাইটে; আমি ত্রুটি পেয়েছি: সন্ধান করুন: ftsopen: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
রিস

মজাদার. আপনি কোন কমান্ড টাইপ করেছেন (পরামিতি সহ)? এবং সেই ডিরেক্টরিতে ফাইলগুলির নাম কী ছিল? এবং যদি আপনি নিজের সংস্করণটি তৈরি করেন তবে আপনি ~/bin/ls-recent.shকি সাবধানতার সাথে স্ক্রিপ্টটি পার্থক্যের জন্য পরীক্ষা করেছেন?
জিম DeLaHunt

10
যারা ম্যাক ওএস এক্সে কিছু ইনস্টল করতে চান না তাদের জন্য:find . -exec stat -f '%m%t%Sm %N' {} + | sort -n | cut -f2-
জ্যাক

5

এই পোস্টে পার্ল এবং পাইথন উভয় সমাধানই আমাকে ম্যাক ওএস এক্স-এ এই সমস্যাটি সমাধান করতে সহায়তা করেছে: /unix/9247/how-to-list-files-sorted-by-modifications-date-recursively -না-sTAT-কমান্ড-উপকার

পোস্ট থেকে উদ্ধৃতি:

পার্ল:

find . -type f -print |
perl -l -ne '
    $_{$_} = -M;  # store file age (mtime - now)
    END {
        $,="\n";
        print sort {$_{$b} <=> $_{$a}} keys %_;  # print by decreasing age
    }'

পাইথন:

find . -type f -print |
python -c 'import os, sys; times = {}
for f in sys.stdin.readlines(): f = f[0:-1]; times[f] = os.stat(f).st_mtime
for f in sorted(times.iterkeys(), key=lambda f:times[f]): print f'

5

লুকানো ফাইলগুলি উপেক্ষা করা - দুর্দান্ত এবং দ্রুত সময়ের স্ট্যাম্প সহ

ফাইলের নামগুলিতে স্পেসগুলি ভালভাবে পরিচালনা করে - এমনটি নয় যে আপনার সেগুলি ব্যবহার করা উচিত!

$ find . -type f -not -path '*/\.*' -printf '%TY.%Tm.%Td %THh%TM %Ta %p\n' |sort -nr |head -n 10

2017.01.28 07h00 Sat ./recent
2017.01.21 10h49 Sat ./hgb
2017.01.16 07h44 Mon ./swx
2017.01.10 18h24 Tue ./update-stations
2017.01.09 10h38 Mon ./stations.json

findলিঙ্কটি অনুসরণ করে আরও গৌরব পাওয়া যাবে।


3

আমি এটি সর্বশেষ অ্যাক্সেসের সময়ের জন্য দেখছি, আপনি সর্বশেষতম আধুনিক সময় করতে খুব সহজেই এটিকে সংশোধন করতে পারেন।

এটি করার দুটি উপায় রয়েছে:


1) আপনি যদি বিশ্বব্যাপী বাছাই করা এড়াতে চান যা আপনার যদি কয়েক মিলিয়ন ফাইল থাকে তবে ব্যয়বহুল হতে পারে, তবে আপনি এটি করতে পারেন: (আপনি যে ডিরেক্টরিটি নিজের সন্ধান শুরু করতে চান সেখানে ডিরেক্টরিতে মূল অবস্থান করুন)

linux> touch -d @0 /tmp/a;
linux> find . -type f -exec tcsh -f -c test `stat --printf="%X" {}` -gt  `stat --printf="%X" /tmp/a`  ; -exec tcsh -f -c touch -a -r {} /tmp/a ; -print 

উপরের পদ্ধতিটি প্রগতিশীলভাবে নতুন অ্যাক্সেসের সময় সহ ফাইলের নাম মুদ্রণ করে এবং সর্বশেষ ফাইলটি এটি প্রিন্ট করে সর্বশেষ অ্যাক্সেসের সময়যুক্ত ফাইল। আপনি অবশ্যই "লেজ -1" ব্যবহার করে সর্বশেষতম অ্যাক্সেসের সময়টি পেতে পারেন।


২) আপনি আপনার উপ-ডিরেক্টরিতে সমস্ত ফাইলের নাম, অ্যাক্সেসের সময়টি পুনরাবৃত্তভাবে মুদ্রণ করতে পারেন এবং তারপরে অ্যাক্সেসের সময় এবং পুচ্ছকে সবচেয়ে বড় প্রবেশের উপর ভিত্তি করে সাজান:

linux> \find . -type f -exec stat --printf="%X  %n\n" {} \; | \sort -n | tail -1

এবং সেখানে আপনি এটা আছে...


3

আমার বেশিরভাগ প্রোফাইলে এই উপন্যাসটি রয়েছে

$ alias | grep xlogs
xlogs='sudo find . \( -name "*.log" -o -name "*.trc" \) -mtime -1 | sudo xargs ls -ltr --color | less -R'

সুতরাং এটি আপনি যা সন্ধান করছেন তা করে (ব্যতিক্রম ছাড়া এটি তারিখ / সময় একাধিক স্তর পরিবর্তিত করে না) - সর্বশেষতম ফাইলগুলি অনুসন্ধান করে (*। লগ এবং এই ক্ষেত্রে * .trc ফাইলগুলি); এছাড়াও এটি কেবলমাত্র গত দিনগুলিতে সংশোধিত ফাইলগুলি খুঁজে পায়, তারপরে সময় অনুসারে বাছাই করে এবং পাইপের আউটপুট কম মাধ্যমে সারণি করে:

sudo find . \( -name "*.log" -o -name "*.trc" \) -mtime -1 | sudo xargs ls -ltr --color | less -R

পুনশ্চ. লক্ষ্য করুন আমার কয়েকটি সার্ভারে রুট নেই, তবে সর্বদা সুডো থাকে, সুতরাং আপনার সেই অংশটির দরকার পড়তে পারে না।


এটি কীভাবে "আপনি ঠিক যা খুঁজছেন"? ওপি কী চেয়েছিল তার একটি ভাল ব্যাখ্যা লিখেছিল এবং এটি এটিকে পুরোপুরি উপেক্ষা করে।
hmijail

যে নির্দেশ করার জন্য ধন্যবাদ। আপনি সঠিক - পরিবর্তনের তারিখ / সময় পেতে এই পদ্ধতিটি একাধিক স্তরে যায় না, এটি কেবলমাত্র এর মধ্যে ডিরেক্টরিগুলির ফাইলের তারিখ / সময় দেখায়। আমার উত্তর সম্পাদনা।
তাগর

1

আপনি চেষ্টা করার জন্য মুদ্রণযোগ্য কমান্ড দিতে পারেন

কে দ্বারা নির্ধারিত ফরম্যাটে% আক ফাইলের শেষ অ্যাক্সেসের সময়, যা হয় @' or a directive for the C স্ট্রফটাইম 'ফাংশন। কে জন্য সম্ভাব্য মান নীচে তালিকাভুক্ত করা হয়; তাদের মধ্যে কিছু সিস্টেমের মধ্যে 'স্ট্রফটাইম' পার্থক্যের কারণে সমস্ত সিস্টেমে উপলব্ধ নাও হতে পারে।


1

দ্রুত বাশ ফাংশন:

# findLatestModifiedFiles(directory, [max=10, [format="%Td %Tb %TY, %TT"]])
function findLatestModifiedFiles() {
    local d="${1:-.}"
    local m="${2:-10}"
    local f="${3:-%Td %Tb %TY, %TT}"

    find "$d" -type f -printf "%T@ :$f %p\n" | sort -nr | cut -d: -f2- | head -n"$m"
}

একটি ডিরেক্টরিতে সর্বশেষ পরিবর্তিত ফাইলটি সন্ধান করুন:

findLatestModifiedFiles "/home/jason/" 1

তৃতীয় যুক্তি হিসাবে আপনি নিজের তারিখ / সময় ফর্ম্যাটটিও নির্দিষ্ট করতে পারেন।


1

নিম্নলিখিতটি আপনাকে সময়-স্ট্যাম্পের একটি স্ট্রিং এবং অতি সাম্প্রতিক টাইম স্ট্যাম্পের সাথে ফাইলের নাম দেয়:

find $Directory -type f -printf "%TY-%Tm-%Td-%TH-%TM-%TS %p\n" | sed -r 's/([[:digit:]]{2})\.([[:digit:]]{2,})/\1-\2/' |     sort --field-separator='-' -nrk1 -nrk2 -nrk3 -nrk4 -nrk5 -nrk6 -nrk7 | head -n 1

ফর্মের ফলাফলের ফলাফল: <yy-mm-dd-hh-mm-ss.nanosec> <filename>


1

এখানে এমন একটি সংস্করণ রয়েছে যা ফাইলের সাথে কাজ করে যাতে ফাঁকা স্থান, নিউলাইনগুলি, গ্লোব অক্ষরও থাকতে পারে:

find . -type f -printf "%T@ %p\0" | sort -zk1nr
  • find ... -printfস্থান এবং \0সমাপ্ত ফাইলের নাম অনুসারে ফাইল পরিবর্তন (EPOCH মান) প্রিন্ট করে।
  • sort -zk1nr NUL সমাপ্ত ডেটা পড়ে এবং এটি সংখ্যার বিপরীতে বাছাই করে

যেহেতু প্রশ্নটি লিনাক্সের সাথে ট্যাগ করা আছে তাই আমি ধরে নিচ্ছি gnuব্যবহারগুলি উপলব্ধ।

আপনি উপরে পাইপ করতে পারেন:

xargs -0 printf "%s\n"

পরিবর্তনের সময় এবং ফাইলের নামগুলি মুদ্রণের জন্য পরিবর্তনের সময় অনুসারে বাছাই করা (অতি সাম্প্রতিক প্রথম) নিউলাইন দ্বারা সমাপ্ত।


1

এটি আমি ব্যবহার করছি (খুব দক্ষ):

function find_last () { find "${1:-.}" -type f -printf '%TY-%Tm-%Td %TH:%TM %P\n' 2>/dev/null | sort | tail -n "${2:-10}" }

পেশাদাররা:

  • এটি মাত্র 3 টি প্রক্রিয়া তৈরি করে

ব্যবহার:

find_last [dir [number]]

কোথায়:

  • dir - অনুসন্ধানের জন্য একটি ডিরেক্টরি [বর্তমান দির]
  • number - প্রদর্শিত নতুন ফাইলগুলির সংখ্যা [10]

এর find_last /etc 4মতো দেখানোর জন্য আউটপুট :

2019-07-09 12:12 cups/printers.conf
2019-07-09 14:20 salt/minion.d/_schedule.conf
2019-07-09 14:31 network/interfaces
2019-07-09 14:41 environment

0

সরল lsআউটপুট জন্য, এটি ব্যবহার করুন। কোনও যুক্তির তালিকা নেই, সুতরাং এটি খুব বেশি দীর্ঘ হতে পারে না:

find . | while read FILE;do ls -d -l "$FILE";done

এবং cutকেবল তারিখ, সময় এবং নাম দিয়ে সুন্দর করা হয়েছে:

find . | while read FILE;do ls -d -l "$FILE";done | cut --complement -d ' ' -f 1-5

সম্পাদনা : সবেমাত্র লক্ষ্য করা গেছে যে বর্তমান শীর্ষ উত্তরগুলি পরিবর্তনের তারিখ অনুসারে বাছাই করে। এখানে দ্বিতীয় উদাহরণের সাথে এটি ঠিক ততটাই সহজ, যেহেতু প্রতিটি লাইনে পরিবর্তনের তারিখটি প্রথম - শেষের দিকে একটি ধরণের চাপ দিন:

find . | while read FILE;do ls -d -l "$FILE";done | cut --complement -d ' ' -f 1-5 | sort

0

এটি ব্যাশেও একটি পুনরুক্তি ফাংশন দিয়ে করা যেতে পারে

F কে এমন একটি ফাংশন দিন যা ফাইলের সময় প্রদর্শন করে যা ডিক্সিকোগ্রাফিকভাবে বাছাইযোগ্য yyyy-mm-dd ইত্যাদি হতে হবে, (ওএস-নির্ভর?)

F(){ stat --format %y "$1";}                # Linux
F(){ ls -E "$1"|awk '{print$6" "$7}';}      # SunOS: maybe this could be done easier

আরিকার্স ফাংশন যা ডিরেক্টরিগুলির মাধ্যমে চলে function

R(){ local f;for f in "$1"/*;do [ -d "$f" ]&&R $f||F "$f";done;}

এবং পরিশেষে

for f in *;do [ -d "$f" ]&&echo `R "$f"|sort|tail -1`" $f";done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.