বাধ্যতামূলক zsh উত্তর:
latest_directory=(parent/*(/om[1]))
প্রথম বন্ধনীগুলির অক্ষরগুলি হ'ল গ্লোবাল কোয়ালিফায়ার : /
কেবলমাত্র ডিরেক্টরিগুলির সাথে মেলে, om
বয়স বাড়িয়ে ম্যাচগুলি বাছাই করা এবং [1]
কেবল প্রথম (অর্থাৎ সর্বশেষতম) ম্যাচটি ধরে রাখতে। N
কোনও খালি অ্যারে পেতে চাইলে যুক্ত করুন (সাধারণত 1-এলিমেন্টি অ্যারে পাবেন) এর কোনও সাব-ডিরেক্টরী না থাকলে parent
।
বিকল্প হিসাবে, ধরে parent
নিলে এতে কোনও শেল গ্লোববিং চরিত্র নেই:
latest_directory='parent/*(/om[1])'; latest_directory=$~latest_directory
আপনার কাছে জেডএস না থাকলে তবে আপনার সাম্প্রতিক জিএনইউ সরঞ্জাম রয়েছে (যেমন নন-এমবেডেড লিনাক্স বা সাইগউইন), আপনি ব্যবহার করতে পারেন find
তবে এটি জটিল। এখানে একটি উপায়:
latest_directory_inode=$(find parent -mindepth 1 -maxdepth 1 -type d -printf '%Ts %i\n' | sort -n | sed -n '1 s/.* //p')
latest_directory=$(find parent -maxdepth 1 -inum "$latest_directory_inode")
এর সাথে একটি সহজ সমাধান রয়েছে ls
, যা কোনও ডিরেক্টরি নামে নতুন লাইন বা (কিছু সিস্টেমে) মুদ্রণযোগ্য অক্ষর না থাকা পর্যন্ত কাজ করে:
latest_directory=$(ls -td parent/*/ | head -n1)
latest_directory=${latest_directory%/}
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'