প্রদত্ত ফাইলের বয়স পান


12

আমি কোনও প্রদত্ত ফাইলের বয়স, কমপক্ষে, দিনগুলিতে কীভাবে পেতে পারি?

আমি ls -lhএবং একই কমান্ড সম্পর্কে ভাল জানি । আমি এমন কিছু চাই যা এই ধরণের কাজ করবে:

getfage <FILE> # prints out '12d' (12 days)

এছাড়াও, এটি কিছুটা ক্রস প্ল্যাটফর্ম হওয়া দরকার যেহেতু আমি এটিকে ম্যাক ওএস এক্স এর অধীনেও ব্যবহার করতে চাই তবে প্রাথমিক ব্যবহার-কেসটি আমার লিনাক্স-বাক্সে রয়েছে।

বিঃদ্রঃ

যেহেতু লিনাক্স তৈরির সময়টি ট্র্যাক করে না, তাই আমি দ্বিগুণ সমাধানের সন্ধান করছি: একটি মাইটাইম (লিনাক্স) এর জন্য - এটিই শেষ বার বলেছিল যে ফাইলটি সংশোধন করা হয়েছিল - এবং ম্যাক ওএস এক্সের জন্য একটি, যা মোকাবেলা করতে পারে এমটাইম বা তৈরির সময়।



@ এসএলএম এটি সৃষ্টির সময় সম্পর্কে বিশেষত, এটি কমান্ড লাইনে বয়সের গণনায় যায় না।
গিলস 'অশুভ হওয়া বন্ধ করুন'


@ এটারডন, আসলেই নয়। উপরে আমার নোট দেখুন ।
আলেকজ মাগুরা

@ আলেকজমগুরা এবং দুপুরে দেওয়া উত্তরগুলি আপনার পক্ষে কী করে না? statআপনার যা দরকার তা সবই দেন?
টেরডন

উত্তর:


17

ইউনিক্স কোনও তৈরির তারিখের উপর নজর রাখে না। কেবলমাত্র উপলভ্য তথ্যগুলি সাধারণত ফাইলগুলি শেষ বার ছিল:

  1. অ্যাকসেসড
  2. সংশোধিত
  3. পরিবর্তিত
  • অ্যাক্সেস - ফাইলটি শেষবার পড়ার সময়
  • সংশোধন করুন - শেষ বার ফাইলটি সংশোধন করা হয়েছে (সামগ্রীটি সংশোধন করা হয়েছে)
  • পরিবর্তন - ফাইলের শেষবারের মেটা ডেটা পরিবর্তন করা হয়েছিল (যেমন অনুমতি)

( এই উত্তর থেকে )

statকমান্ডটি ব্যবহার করে আপনি কোনও নির্দিষ্ট ফাইলের সাথে সম্পর্কিত তারিখগুলি পেতে পারেন ।

উদাহরণ

$ stat ffmpeg 
  File: `ffmpeg'
  Size: 19579304    Blocks: 38248      IO Block: 4096   regular file
Device: fd02h/64770d    Inode: 10356770    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (  500/    saml)   Gid: (  501/    saml)
Access: 2013-11-26 10:49:09.908261694 -0500
Modify: 2013-11-02 17:05:13.357573854 -0400
Change: 2013-11-02 17:05:13.357573854 -0400

ওএসএক্স এবং এইচএফএস

আপনি যদি ইউনিক্সের অধীনে ব্যবহৃত ফাইল সিস্টেম ওএসএক্স ব্যবহার করেন তবে এইচএফএস হয় । এটি অন্যান্য কয়েকটি ইউনিক্সের মতো পরিবর্তনের সময় ইত্যাদির সাথে ফাইল সিস্টেমের মধ্যে তৈরি হওয়ার তারিখটি রাখে এমন কয়েকটি (যা সম্পর্কে আমি সচেতন) একটি one

উদ্ধৃতাংশ

একটি ফাইল রেকর্ড ফাইলের জন্য তার সিএনআইডি, ফাইলের আকার, তিনটি টাইমস্ট্যাম্প (যখন ফাইলটি তৈরি করা হয়েছিল, শেষবার সংশোধিত, শেষ বার ব্যাক আপ করা হয়েছিল), ডেটা এবং রিসোর্স ফর্ক এবং পয়েন্টারগুলির প্রথম ফাইলের এক্সটেন্টস সংরক্ষণ করে এক্সটেন্ট ওভারফ্লো ফাইলটিতে ফাইলের প্রথম ডেটা এবং সংস্থান সীমা রেকর্ডে। ফাইল রেকর্ডে দুটি 16 বাইট ফিল্ডও সঞ্চয় করে যা ফাইন্ডার দ্বারা ফাইল সম্পর্কে বৈশিষ্ট্যগুলি সংরক্ষণ করতে যেমন তার স্রষ্টার কোড, টাইপ কোড, ফাইলটিতে উইন্ডোটি উপস্থিত হওয়া উচিত এবং উইন্ডোটির মধ্যে এর অবস্থানের মতো জিনিসগুলি ব্যবহার করে।

টাইমস্ট্যাম্প

টাইম স্ট্যাম্পগুলি সর্বদা ফাইল সিস্টেমে রক্ষণাবেক্ষণ করা হয়, সুতরাং যেগুলি সময় ট্র্যাকিং তাদের মাধ্যমে দেওয়া হয় (এক্সটি 3, এক্সটি 4, এক্সএফএস, ইত্যাদি) দ্বারা সীমাবদ্ধ।

ফাইল-সিস্টেম

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

তথ্যসূত্র


আপডেটের জন্য ধন্যবাদ, এটি সাহায্য করে। প্রকৃতপক্ষে, আমি এখানে পড়লাম যে ext4 তৈরির তারিখ রাখতে পারে তবে এটি এখনও কার্নেলে প্রয়োগ করা হয়নি।
টেরডন

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

18

ওএসএক্স ফাইল তৈরির উপর নজর রাখে, তবে বেশিরভাগ অন্যান্য সংযুক্তি তা করে না, তাই ফাইল তৈরির পর থেকে অতিবাহিত সময়টি জানার উপায় নেই। আপনি কেবলমাত্র কোনও অপারেটিং সিস্টেমে এটির শেষ পরিবর্তন হওয়ার পরে সময় অতিবাহিত করতে পারেন।

কোনও ফাইলের পরিবর্তনের সময় পুনরুদ্ধার করার মতো কোনও পোর্টেবল শেল ইউটিলিটি নেই, কেবলমাত্র lsআউটপুট যা পার্স করা অসম্ভব। লিনাক্সের অধীনে, নিম্নলিখিত কমান্ডটি কোনও ফাইলের বয়স ছাপায়:

echo $(($(date +%s) - $(date +%s -r "$filename"))) seconds
echo $((($(date +%s) - $(date +%s -r "$filename")) / 86400)) days

লিনাক্সের অধীনে, আপনি এর stat -c %Y -- "$filename"প্রতিশব্দ হিসাবে ব্যবহার করতে পারেন date +%s -r "$filename"

ওএসএক্স dateএবং statকমান্ডগুলি পৃথক। আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

echo $(($(date +%s) - $(stat -t %s -f %m -- "$filename"))) seconds

নন-এমবেডেড লিনাক্স সিস্টেম এবং ওএসএক্সের পার্ল ডিফল্টরূপে ইনস্টল করা আছে।

perl -l -e 'print -M $ARGV[0], " days"' "$filename"

এটি ওএস বা ফাইল সিস্টেমের উপর নির্ভর করে? এই প্রশ্নোত্তর থেকে বোঝা যাচ্ছে যে ফাইলসিস্টেম তাদের রাখে তবে কার্নেলের অ্যাক্সেসের জন্য একটি পদ্ধতি সরবরাহ করা দরকার।
টেরডন

@ স্টারডন - আমার আপডেট দেখুন।
slm

@terdon উভয় আপনার যে প্রশ্নোত্তরটি সংযুক্ত হয়েছে এটি সঠিক, বর্তমান ফাইল সিস্টেমগুলি কিছু সময়ের জন্য তৈরির সময়টি ট্র্যাক করে চলেছে। ফ্রিবিএসডি-তে আপনি আসলে statএগুলি পেতে পারেন , লিনাক্সে সিস্কালটি পুনরায় কাজ করা যায় নি তাই আপনাকে হ্যাকিংয়ের আশ্রয় নিতে হবে debugfs
উইজেডসবারমারিনার

1
@ উইনজেডসবারমারিনার এই সতর্কতার সাথে যে ফাইলসিস্টেমটিতে সৃষ্টির সময়টি প্রায়শই অ্যাপ্লিকেশনটিতে তৈরির তারিখ হয় না, কারণ অনেকগুলি অ্যাপ্লিকেশন স্থানে ওভাররাইটের পরিবর্তে নতুন সংস্করণ সংরক্ষণ করতে পদ্ধতি হিসাবে নতুন-তারপর-সরান ব্যবহার করে।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

4

গিলসের উত্তরের উপর ভিত্তি করে, এখানে একটি বাশ ফাংশন যা ফাইলের বয়স সেকেন্ড বা ত্রুটিতে ফিরে দেয়।

function fileAge
{
    local fileMod
    if fileMod=$(stat -c %Y -- "$1")
    then
        echo $(( $(date +%s) - $fileMod ))
    else
        return $?
    fi
}

1
ঝরঝরে, দিনগুলি, সপ্তাহের বয়স দেখতে সাধারণ বিভাগ যোগ করে ঝরঝরে ফাংশন, সহজেই ....
ইমমানুয়েল ডিভাক্স

0

আপনি ব্যবহার করতে পারেন stat -f%B, ls -lUঅথবা mdls -n kMDItemFSCreationDateOS X এর সৃষ্টি (জন্ম) সময় দেখতে:

$ stat -f%B file
1402340803
$ ls -lU file
-rw-r--r--  1 admin  staff  108514 Jun  9 22:06 file
$ mdls -n kMDItemFSCreationDate file
kMDItemFSCreationDate = 2014-06-09 19:06:43 +0000
$ echo $((($(date +%s)-$(stat -f%B file))/86400))
10

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