সর্বশেষ পরিবর্তিত তারিখের উপর ভিত্তি করে ডিরেক্টরিতে ফাইলগুলি পুনরাবৃত্তভাবে বাছাই করুন


11

সর্বশেষ পরিবর্তিত তারিখের উপর ভিত্তি করে ডিরেক্টরিতে ফাইলগুলি পুনরাবৃত্তভাবে বাছাই করুন

আমি আমার ডিরেক্টরিতে প্রচুর ফাইল পরিবর্তন করেছি যা সর্বশেষ পরিবর্তিত তারিখ অনুসারে বাছাই করে সেই ফাইলগুলি কী তা জানতে চাই এবং এটিতে আমি চাই কিছু এক্সটেনশন বাদ দেওয়া হোক

এসএনএন ডিরেক্টরিতে আমার কাছে অনেকগুলি এসভিএন ফাইল রয়েছে যা আমি বাছাই করতে চাই না


আমার উত্তরে কীভাবে এক্সটেনশনটি বাদ দেওয়া যায় তা আমি ডেমো করি।
মাইকজার্ভ

উত্তর:


18
find -printf "%TY-%Tm-%Td %TT %p\n" | sort -n

আপনাকে এরকম কিছু দেবে

2014-03-31 04: 10: 54.8596422640 ./foo
2014-04-01 01: 02: 11.9635521720 ./bar


আমি কি ফোল্ডার থেকে কোনও ফাইল এক্সটেনশন বাদ দিতে পারি ....
ড্যানি

@Danny হ্যাঁ, যে খোঁজ সাথে করা সহজ: find -not -iname '*.ext'
n.st

এটি -not -path " SVN " -not -name "* SVN" -printf "% TY-% Tm-% Td% টিটি% পি \ N" | বাছাই করুন - এটিতে আমার ঠিক অনেকটাই ধন্যবাদ প্রয়োজন হয়েছিল @ n.st
ড্যানি

5

আপনি যদি ডিরেক্টরি কাঠামো সমতল করতে চান (এইভাবে সমস্ত ডিরেক্টরিতে সমস্ত ফাইলের উপর তারিখ অনুসারে বাছাই করে, কোন ডিরেক্টরিতে ফাইল রয়েছে তা উপেক্ষা করে) find@yeti দ্বারা প্রস্তাবিত -প্রশোচনটি যাওয়ার উপায়। আপনি যদি ডিরেক্টরি কাঠামো সংরক্ষণ করতে চান, আপনি চেষ্টা করতে পারেন

$ ls -ltR /path/to/directory

যা ভিত্তি করে ডিরেক্টরি ভিত্তিক।


1
এটি আমাকে ফোল্ডার অনুসারে প্রদান করুন যেখানে আমার যা প্রয়োজন তা সব মিলিয়ে সম্প্রতি পরিবর্তিত ফাইলগুলি কী
ড্যানি

5

ব্যাশে shopt -s globstarপ্রথমে চালান । Ksh93 এ, set -o globstarপ্রথম চালান । Zsh এ, আপনি ইতিমধ্যে সেট করেছেন।

ls -dltr **/*

আপনার সিস্টেমে কমান্ড লাইনের দৈর্ঘ্য সীমা অতিক্রম করে এমন অনেকগুলি ফাইল থাকলে এটি একটি ত্রুটি ফিরিয়ে দেবে। Zsh এ, আপনি এর পরিবর্তে এটি ব্যবহার করতে পারেন:

print -rl -- **/*(Om)

এটি এখানে কেবলমাত্র উত্তর যা সোলারিস 10 এর জন্য কাজ করে, ধন্যবাদ! :)
লক্ষ্মী

3

ধরে নিচ্ছেন আপনি জিএনইউ অনুসন্ধানের জন্য ব্যবহার করছেন, চেষ্টা করুন:

find $SOMEPATH -exec stat -c '%Y %n' '{}' + | sort -n

1
আপনি ব্যবহার করতে পারে find'র -printfবিকল্প একটি পৃথক প্রক্রিয়া invoking (বা একাধিক, ফাইল সংখ্যার উপর নির্ভর করে) এড়ানো। একটি উদাহরণের জন্য আমার উত্তর দেখুন ।
n.st

1
এটি করার অন্যান্য উপায় রয়েছে তা জেনেও আমি একটি সুযোগ এবং অনুষ্ঠানটি দিতে চেয়েছিলাম । সত্যিই! কখনও কখনও আমি মনে করি, আরও মনোযোগের দাবি রাখে ... এবং উপাদানগুলির বিষয়ে না পড়া এবং পরিণতি সম্পর্কে চিন্তাভাবনা না করেই এখান থেকে রেসিপি নেওয়া উচিত নয় ...stat-exec ... +stat

-printf

1
@yeti - আপনার যদি findনেই -printf, আপনি ব্যবহার করতে পারেন -exec sh -c 'printf...'একই কার্যকারিতা অনেক জন্য। এর মধ্যে $(pwd)পুরোপুরি যোগ্য পাথের অ্যাক্সেস অন্তর্ভুক্ত থাকবে ।
মাইকজার্ভ

2
আমি প্রচুর লিনাক্স ব্যবহারকারীদের সাথে কখনও পড়িনি stat। তাই মাঝে মাঝে আমি কেবল কিছুটা দৃষ্টি নিবদ্ধ করতে চাই stat... আমার মনে হয় statএটি প্রাপ্য ...

2

কেবলমাত্র সাম্প্রতিক জিএনইউ সরঞ্জাম ব্যবহার করে ফাইলের নামগুলি দৃ rob়তার সাথে তালিকাবদ্ধ করতে:

find . -printf '%A@ %p\0' |
  sort -nz |
  sed -z 's/^[^ ]* //' |
  tr '\0' '\n'

2
find $DIR -depth -maxdepth 3 \
    -type d -readable -printf \
    'printf "\\n%p\\n"
    ls -t --color=always "%p"\n' |\
    . /dev/stdin 2>&-

এটি যে কোনও যুক্তি তালিকার সমস্যাগুলি এড়িয়ে চলে কারণ একমাত্র যুক্তিটি lsকখনই পাবে আপনার তালিকাভুক্ত ডিরেক্টরিটির নাম। আপনি নিজের পছন্দ মতো কিছু করতে পারেন।

শেল মাত্র একটি শেল স্ক্রিপ্ট হিসাবে - এটা একই প্রক্রিয়া এবং বিষয় যখন আপনি সম্মুখীন করতে নেই বলা হয়।. sources|pipeexecve

যে কোনও ক্ষেত্রে - উপরেরটি কেবলমাত্র তিন-গভীর যা পরিবর্তনের মাধ্যমে সামঞ্জস্যযোগ্য maxdepth এটি প্রথমও গভীর - সুতরাং আপনি আপনার বর্তমান ডিরেক্টরি থেকে পিছনের দিকে কাজ করে depth

আপনি খেয়ালও করতে পারেন $LSCOLORS- আমার মেশিনে এটি খুব সুন্দরভাবে মুদ্রিত কলাম এবং আপনার কাছে যা চাইবে সমস্ত কিছু সরবরাহ করে ls- বা এই বিষয়টির জন্য আপনি যে কল্পনা করতে পারেন তার সাথে আপনি কী করতে চান. source.

কোন এসভিএন

আবার, এটি আপনার প্রত্যাশিত কিছু করবে lsসুতরাং .svnফাইলগুলি আড়াল করা lsলাইন এতে পরিবর্তন করার মতোই সহজ :

ls -t --color=always --hide="*svn" "%p"\n

অথবা আপনি যদি svnপ্রতিটি ফোল্ডারে বিস্তৃততা দেখতে চান তবে আপনি ./svnএটি পরিবর্তন করতে পারেন যাতে পুরো কমান্ডটি দেখতে এমন হয়:

    find $DIR -depth -maxdepth 3 \
        -type d -readable -printf \
            'printf "\\n%p\\n" ; hide=
            [ "%p" = "./svn" ] && hide="*svn"
            ls -t --color=always --hide="$hide" "%p"\n' |\
    . /dev/stdin 2>&-

ব্যক্তিগতভাবে, আমি এটি পছন্দসইয়ের সাথে পছন্দ করি -sএবং যদি আপনি যত্নশীল হন তবে -uঅল্প সময়ের পরিবর্তে অ্যাক্সেসের সময় অনুসারে বাছাই করুন।


1

এই এক সব তালিকা প্রস্তুত করা যাবে files মধ্যে <dir>আগ সত্তা দিয়ে প্রাচীনতম পরিবর্তিত

find <dir> -type f -print0 | xargs -0 ls -ltr

এবং এটির সাথে সর্বশেষতম সংশোধিত শীর্ষস্থানীয়

find <dir> -type f -print0 | xargs -0 ls -lt

মনে রাখবেন যে কেবলমাত্র ফাইলের নামের তালিকাটি যদি আপনার সিস্টেমে মোট কমান্ড লাইন দৈর্ঘ্যের সীমা অতিক্রম না করে তবে এটি কাজ করে।


সত্য, আমি এটি সম্পর্কে ভুলে গেছি
ইউএনএক্স

কমান্ড সম্পর্কে রেফারেন্সের জন্য : আরগ
sc

@ গিলস: আপনার অর্থ xargs -0(উভয় ক্ষেত্রে)  xargs -print0সমতূল্য xargs -p -r -i -n -t -0বা xargs -inprt0বা xargs -0ntripসম্ভবত নয় আপনি কি বোঝানো।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.