স্মার্ট ফোল্ডার ফিল্টার "ধারণ করে না"


13

স্মার্ট ফোল্ডার ফোল্ডার বাদ দিন

শেষ পর্যন্ত আমি এই ফাইন্ড কমান্ডের ফলাফলটি একটি স্মার্ট ফোল্ডার হতে চাই।

মানদণ্ডটি এত জটিল নয়:

  • নামটি "README.md" হওয়া উচিত
  • টাইপ ফাইল হতে হবে
  • পাথটিতে "নোড_মডিউল" থাকা উচিত নয়

find /Users/me/Documents -type f -name README.md -not -path "*/node_modules/*"

সমস্যাটি হ'ল স্মার্ট ফোল্ডারগুলির মানদণ্ড অপারেটরের তালিকার কোনও does not containবিকল্প নেই বলে মনে হচ্ছে ।

উপলভ্য বিকল্পগুলি হ'ল:

  • ম্যাচ
  • রয়েছে
  • সঙ্গে শুরু
  • দিয়ে শেষ হয়
  • হয়
  • এটি না

এটি কি সম্ভব হয় এবং যদি তাই হয় তবে কীভাবে?

সম্পাদনা 1

আমি দেখতে পেলাম যে বিকল্প কীটি ধারণ করে আমি স্মার্ট ফোল্ডার অনুসন্ধানের মানদণ্ডে একটি অস্বীকারের ধারাটি যুক্ত করতে সক্ষম হয়েছি তবে নোড_মডিউলগুলি ফোল্ডারটি আমি সফলভাবে বাদ দিতে পারি না। কোন মানদণ্ডটি ব্যবহার করা উচিত তা স্পষ্ট নয় তবে আমি চেষ্টা করেছি এমন একটিরও কাজ করছে বলে মনে হচ্ছে না:

  • ডকুমেন্ট ধারক
  • ফোল্ডারের নাম ধারণ করে
  • ফোল্ডারের নাম

আমি নিম্নলিখিত অপারেটরগুলির সাথে এগুলি একত্রিত করার চেষ্টা করেছি:

  • রয়েছে
  • ম্যাচ

এবং নিম্নলিখিত শর্তাদি সহ:

  • node_modules
  • node_modules

যদি এটি ওয়াইল্ডকার্ড অনুসন্ধানগুলিকে সমর্থন করে।

আমি উপরের ফিল্টারগুলি, অপারেটরগুলি এবং পদগুলির সমস্ত সংমিশ্রণ চেষ্টা করেছি।

ডকুমেন্টেশন বিষয়টিতে এতটাই দুর্বল।

এখানে চিত্র বর্ণনা লিখুন


2
আপনি কি সমাধান খুঁজে পেয়েছেন?
Göta

উত্তর:


2

দেখে মনে হচ্ছে কেএমডিআইটিমপথ আপনার যা প্রয়োজন তা করতে পারে না:

নো-ফলাফল-ইন-স্পটলাইট-ইন-অনুসন্ধান-বিরুদ্ধে-kmditempath

কিছু সম্ভাব্য বিকল্পগুলি এখানে আলোচনা করা হয়েছে:

কিভাবে-থেকে-চিহ্নিতকরণ-এ-ফাইল-ইন-স্পটলাইট-ব্যবহার-ফোল্ডারের-এবং-ফাইল-নাম


1
ধন্যবাদ তবে আমার কাছে ইতিমধ্যে একটি কমান্ড লাইন ফাংশন রয়েছে যা আমার আগ্রহী ফাইলগুলি পুনরুদ্ধার করে এবং স্পটলাইট অনুসন্ধান না করে আমি একটি স্মার্ট ফোল্ডার তৈরি করছি। আমি এমকেডিআইটেমপথের সীমাবদ্ধতা পেরিয়ে এসেছি।
km6zla

স্পটলাইট অনুসন্ধান এবং স্মার্ট ফোল্ডারগুলি একই অভ্যন্তরীণ প্রক্রিয়া ব্যবহার করে। কেএমডিআইটিপথ এই ব্যবহারকারী ইন্টারফেসগুলির মধ্যে কোনওটিতেই কাজ করবে না।
গ্রানাইটরোবার্ট

1

একটি কর্মক্ষেত্র আছে, কিন্তু এটি খুব সুন্দর না। তবে, যদি আপনি কেবলমাত্র একটি ফোল্ডারে আপনার README গুলি অ্যাক্সেস করতে চান (আপনার নির্দিষ্ট করা মানদণ্ডটি ব্যবহার করে) এবং সেগুলি কোথা থেকে এসেছে সে সম্পর্কে কিছু ধারণা থাকলে এটি আপনার উদ্দেশ্যে পরিবেশন করবে।

সঠিক ফাইলগুলি অনুসন্ধান করার জন্য আপনার শেল স্ক্রিপ্টটি ব্যবহার করা এবং তারপরে একটি ডিরেক্টরিতে প্রতিটি ফাইলের উপাধি সংগ্রহ করা ধারণা। তারপরে আমরা মূল ফাইলটি কোন পিতামাতার ডিরেক্টরিতে অন্তর্ভুক্ত তা আমাদের জানানোর জন্য ডাকনামটির নামকরণ করি।

এটি করার অ্যাপ্লিক্রিপ্ট নীচে রয়েছে। এটি এখানে অদ্ভুত লাগছে তবে স্ক্রিপ্ট সম্পাদক এ এটি আটকানোর চেষ্টা করুন এবং এটি সংকলন করুন এবং আপনার যুক্তিটি দেখতে সক্ষম হওয়া উচিত।

--- Set up the name of the folder to contain search results
set myFolder to POSIX file "/Users/me/SmartFolder"

--- Clear the folder of contents. Then we will see only the results of an updated search
tell application "Finder"
    display dialog "WARNING. This will delete all files below " & (POSIX path of myFolder) & " . Are you sure you want to continue?"
    delete (every item of folder myFolder)
    --- alternatively, if you want to keep your script in the same folder, replace the line above with
    --- delete ((every item of folder myFolder) whose name does not end with ".scpt")
end tell

--- The shell command that is doing all the searching
set FileList to do shell script "find /Users/me/Documents -type f -name README.md -not -path '*/node_modules/*'"

--- The rest of the script takes each file and makes an alias in our folder containing search results. The aliases are renamed according to "ParentDirectory_filename"
set FileList to paragraphs of FileList
repeat with CurrentFile in FileList
    set ASCurrentFile to POSIX file CurrentFile
    set PathList to words of (ASCurrentFile as string)
    --- Make the new name include the Parent Directory and file name
    set NewName to (item -2 of PathList) & "_" & (item -1 of PathList)
    tell application "Finder"
        make new alias file at myFolder to ASCurrentFile
        --- We need to save the name/location of the new alias file before we can try to rename it
        set NewAlias to result
        set i to 1
        repeat
            try
                --- Try to rename the alias. Won't work if there's already an alias with the new name
                set name of NewAlias to NewName
                exit repeat
            on error
                --- Append a number to the alias. Increase the number for more duplicates
                if i is not equal to 1 then
                    set NewName to text 1 thru -3 of NewName
                end if
                set NewName to NewName & " " & i
                set i to (i + 1)
            end try
        end repeat
    end tell
end repeat

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