কোনও ফোল্ডারে সর্বশেষ সংযুক্ত ফাইলের ফাইলের সন্ধান করা হচ্ছে - ম্যাক ওএস 10.9


1

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

set myFolder to "/Users/lawsome/folder"
tell application "Finder" to set latestFile to the last item of (sort files of (POSIX file myFolder as alias) by creation date) as alias
            set latestpath to POSIX path of latestFile
set latestpath to POSIX path of latestFile

পরিশেষে, জোসে আলবান এর উত্তর @ জিজ্ঞাসাবাদে এমডিএলএস টার্মিনাল কমান্ডটি ব্যবহার করে একটি সঠিক বাছাই করা তালিকা দেয়। এই তালিকাটিতে আমি কীভাবে সর্বশেষ প্রবেশের ফাইলের পথ পেতে পারি।

বা কাঙ্ক্ষিত পথ পেতে কোনও উপায়।

উত্তর:


2

অ্যাপলস্ক্রিপ্ট কোডটি মনে হচ্ছে ঠিক এর creation dateচেয়ে বরং এটি পাচ্ছে date addedফাইন্ডার এবং সিস্টেম ইভেন্টগুলিdate added অ্যাপলস্ক্রিপ্টে তথ্য সঞ্চয় করে না । আপনি যদি ইয়োসেমাইট চালাচ্ছিলেন তবে আপনি এটি অ্যাপলস্ক্রিপ্টঅবিজেসি দিয়ে করতে পারতেন। তবে, মাভেরিক্সের সাথে, আমি কেবল শেল স্ক্রিপ্টিংয়ের মাধ্যমে ভাবতে পারি a

বাশ স্ক্রিপ্টের মাধ্যমে:

F=~/folder \
&& [[ -d "$F" ]] \
&& mdls -name kMDItemFSName -name kMDItemDateAdded -raw "$F"/* \
 | xargs -0 -I {} echo {} \
 | paste -sd" \n" - - \
 | sort \
 | tail -1 \
 | cut -f4- -d" " \
 | printf '%s\n' "$F/$(cat)"

একটি অ্যাপলস্ক্রিপ্টের মধ্যে থেকে:

অ্যাপলস্ক্রিপ্ট ব্যবহার করে শেল কমান্ডগুলি কার্যকর করার ক্ষমতা রাখে do shell script। আপনি হয় উপরের পুরো কমান্ডটি ব্যবহার করে চালাতে পারেন do shell scriptযা সম্ভবত বেশিরভাগ লোকেরা করতেন। তবে, কেবল প্রদর্শনের উদ্দেশ্যে, আমি এটিকে কিছুটা অ্যাপলস্ক্রিপ্টিংয়ের সাথে মিশাতে চলেছি।

property text item delimiters : space

set myFolder to "/Users/lawsome/folder" -- Folder to be evaluated

-- Assemble shell command
set sh to the contents of 
    "[[ -d", quoted form of myFolder, "]]", "&&", ¬
    "mdls", "-name kMDItemFSName", "-name kMDItemDateAdded", ¬
    "-raw", [quoted form of myFolder, "/*"], ¬
    "|", "xargs", "-0 -I {} echo {}", ¬
    "|", "paste", "-sd' \\n' - -", ¬
    "|", "sort"} as text

do shell script sh -- run the bash command
set latestFileAddedToFolder to the last paragraph of the result
--> e.g. 2018-08-13 08:02:52 +0000 Some File Name.txt

-- Split text up into date components and filename text
set [{yyyy, m, dd, HH, MM, SS, "+", timezone}, filename] to ¬
    [words 1 thru 8, text 27 thru -1] of latestFileAddedToFolder

-- Construct AppleScript date object from date components
tell the (current date) to set ¬
    [dateAdded, year, its month, day, time] to ¬
    [it, yyyy, m, dd, hours * HH + minutes * MM + SS]

set pathToMostRecentlyAddedFile to myFolder & "/" & filename

return contents of {pathToMostRecentlyAddedFile, ¬
    "was added to its containing folder", myFolder, ¬
    "on", date string of dateAdded, ¬
    "at", time string of dateAdded} as text

আমি নিশ্চিত যে ইউনিক্স তৈরির তারিখ সংরক্ষণ করে না, এটি কেবল সর্বশেষ পরিবর্তিত তারিখ সংরক্ষণ করে। আর সব কিছু অ্যাপল যুক্ত করেছে।
জবিস

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

@ জবিস 👍🏼
সিজেকে

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