`Find based ব্যবহার না করে তারিখের ভিত্তিতে ফাইলগুলি সন্ধান করা হচ্ছে`


1

আমি জানি আমি findযা যা করতে চাই তা করতে পারি তবে আমি ভাবছি যে কোনও নির্দিষ্ট পয়েন্টের আগে / পরে তৈরি হয়েছে বা একটি নির্দিষ্ট সময়ে ফাইল সিস্টেমে ফাইলগুলি খুঁজে পাওয়ার বিকল্প বিকল্প আছে কিনা?

সাধারণত আমি উপর নির্ভর updatedb& locateআমার ফাইল চাহিদা অনুসন্ধানের অধিকাংশ জন্য। এই সরঞ্জামগুলির সাথে সম্পর্কিত সমস্যাগুলি হ'ল এটিতে কেবল ডিরেক্টরি এবং ফাইলের নাম রয়েছে এবং এটি কেবল স্থানীয় ডিরেক্টরিগুলির একটি ডাটাবেস তৈরি করে, কিছুই সিআইএফএস | এনএফএসের মাধ্যমে বা -o loop(যেমন, আইসো চিত্রগুলি) মাউন্ট করা কিছু নয় ।

সুতরাং আমি যদি পুরো সিস্টেমের (স্থানীয় এবং দূরবর্তী ফাইল সিস্টেমগুলি) গতকালকের পরে তৈরি ফাইলগুলি সন্ধান করতে চাই তবে আমার বর্তমানে এটি ব্যবহার করা দরকার find

অন্য কোন সরঞ্জাম, যদি থাকে তবে এটি একই ধরণের সম্পাদন করবে?

আমি চেষ্টা করেছি lsএবং grepতবে এর জন্য (এখনও পর্যন্ত আমার প্রচেষ্টায়) একাধিক অনুসন্ধান প্রয়োজন:

ls -lR | grep Aug | grep 10
ls -lR | grep Aug | grep 11

3
আপনি কেন ব্যবহার করতে চান না?
হাইজেনবাগ

@ 0verbose - বিকল্প জন্য
ওয়ারেন

alias lookfor='find'কৌতুক করতে পারে। (আমি অবশ্যই মজা করছি)
nhinkle

1
@ নিফেল: আপনি কুড়াল দিয়ে মাংস কাটতে পারেন, তবে প্লেটের প্রতি যত্নশীল। আমি মনে করি কাঁচিগুলিও এর সমাধান হতে পারে এবং তারা প্লেনে নিরাপদ থাকতে পারে। কখনও কখনও, আমি আমার বার্গারের মাংস কাঁটা দিয়ে কাটা করি যাতে ছুরি ধুতে না হয় (আমি প্রোগ্রামার, তাই আমিও অলস)। এবং যদি আমি সত্যিই ক্ষুধার্ত এবং ছুরির বাইরে থাকি তবে আমি দাঁত দিয়ে আমার স্টেক কেটে ফেলতে পারি। :-)
jfg956

উত্তর:


1

আপনি আরও সহজে বোধগম্য হতে ls এর টাইমস্ট্যাম্প আউটপুটটিকে কাস্টমাইজ করতে পারেন:

ls -ln --time-style="+%Y%m%d%H%M%N"

এবং তারপরে, তারিখের তুলনা করা স্ট্রিংগুলির তুলনা করা তত সহজ। আপনাকে এডকে দিয়ে করতে হবে:

ls -ln --time-style="+%Y%m%d%H%M%N" | tail -n +2 | awk -F " " '$6 > "201108100000000000000" {$1=$2=$3=$4=$5=$6=""; print substr($0, 7)}'

ফাইলের সঠিক সময়ের জন্য সঠিক -aবা -cবিকল্পটি ব্যবহার করতে সাবধান হন ।

এবং মনে রাখবেন যে সিটিএম এটি তৈরির সময় নয়, এটি ইনোড পরিবর্তনের সময় (সৃষ্টি, অনুমতি, ফাইলের আকার পরিবর্তন, ...)।

সম্পাদনা করুন :

অ্যাজক এমনকি এড়ানো যায়:

ls -ln --time-style="+%Y%m%d%H%M%N" | tail -n +2 | \
while read perms inode user group size date file; do
  if [ $date > "201108100000000000000" ]; then
    printf "%s\n" "$file"
  fi
done


1

দ্রুত একটি একক কমান্ড টাইপ করার জন্য, আমি নিশ্চিত নই, আপনি একটি স্ক্রিপ্টের সাথে একটি কৌশলযুক্ত লাইন বা একাধিক করার চেয়ে ভাল হতে পারেন। এই রেখাটি রয়েছে, যা একটি রেজেেক্স ব্যবহার করে
$ls -lR | grep -E "2011-08-1[01]"
একটি [বিসি] এর মতো একটি রেজেক্স অর্থ বি বা সি এর পরে একটি। সুতরাং 1 [01] 10 এবং 11 এর অন্তর্ভুক্ত করে আপনি 10-13 এর জন্য 1 [0-3] করতে পারলেন যদিও আমরা 13 তারিখের লিখিতভাবে এখনও নেই of এটি 07 বা 08 বা 09 বা 10 বা 11 ... 13. 0 [7-9] | 1 [0123] হবে।


1

আপনি কেন অনুসন্ধান ব্যবহার করতে চান না তা জানতে চাই , তবে আমি সত্যিই জানতে চাই বলে মনে করি না ...

আমি বিশ্রী চেষ্টা করে দেখতে চাই:

ls -lR | awk '{ d="^2011-0[78]"; if ($6 ~ d){ print $0 }}'

d in কমান্ড হল নিয়মিত অভিব্যক্তি।
তারপরে ls আউটপুট থেকে 6th ষ্ঠ কলামটি সরবরাহকৃত রেজেক্স এবং পুরো সারিটি কেবল যদি তা থেকে মুদ্রিত হয় তবে তা মূল্যায়ন করা হয়।
আমার সিস্টেমে তারিখটি yyyy-mm-dd hh এর আকারে রয়েছে: মাই এবং রেইগেক্সের সাথে আমি জুলাই এবং অগাস্ট ফাইলগুলি অনুসন্ধান করছিলাম। আপনার প্রয়োজন অনুসারে রেজেক্স পরিবর্তন করুন।

আমি কেন কেন জোর করে বেছেছি তা যুক্ত করার জন্য : আপনি মুদ্রণ replace 0 এর সাথে প্রিন্ট $ 8 প্রতিস্থাপন করতে পারেন এবং আপনি কেবল আউটপুট-এ ফাইলের নামটি পেতে পারেন - গ্রেপ রেজেক্সের সাথে গোলমাল হবে ...


1

আপনি ব্যাশ পরীক্ষাগুলি ব্যবহার -nt-otবিল্ড করতে পারেন । বাশ ম্যানুয়াল থেকে:

file1 -nt file2: সত্য যদি file1 ফাইল2 এর চেয়ে নতুন (পরিবর্তনের তারিখ অনুসারে) হয়, অথবা যদি ফাইল 1 বিদ্যমান থাকে এবং ফাইল 2 না থাকে।

file1 -ot file2: সত্য যদি file1 ফাইল 2 এর চেয়ে পুরানো হয়, বা যদি ফাইল 2 উপস্থিত থাকে এবং ফাইল 1 না থাকে।

অস্থায়ী ফাইল পরীক্ষা করার জন্য, আপনি স্পর্শ ব্যবহার করতে পারেন।

ডিরেক্টরিতে ফাইলগুলি লুপ করার জন্য, আপনি ডিরেক্টরি পরীক্ষার ( -d file) পরীক্ষার জন্য ব্যাশ পরীক্ষায় শেল প্রসারণ এবং ব্যাশ বিল্ড ব্যবহার করতে পারেন । তবে ফাইল সিস্টেমে লিংক লুপ সম্পর্কে সতর্কতা অবলম্বন করুন।


1

আপনি আপনার অনুসন্ধানের টাইমস্ট্যাম্প সহ একটি অস্থায়ী ফাইল তৈরি করতে পারেন এবং তারপরে ls এর বাছাইকরণ বিকল্পটি ব্যবহার করতে পারেন: আপনি যে ফাইলগুলি সন্ধান করছেন সেটি অস্থায়ী ফাইলের আগে (বা পরে) হবে be

ফাইল বিভাজন (বা ls আউটপুট বিভক্তকরণ) লিনাক্স ফাইল বিভাজনে আলোচিত হয় ।

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