মূল ফোল্ডার ওএস এক্সে সদৃশ মোছা


0

আমি এমন কিছু করতে চাই যা আমি নিশ্চিত যে বেশ সহজবোধ্য - আশা করি এর সাথে টার্মিনাল কমান্ডের অনুরূপ: আমি কীভাবে এল ক্যাপাইটানের একাধিক ফোল্ডারের মধ্যে নকল ফাইলের তুলনা করতে এবং মুছতে পারি?

আমি দুটি ফরম্যাটের একটিতে বেশ কয়েকটি ডিরেক্টরিতে ফটো রাখছি:

স্বল্প ভ্রমণ:

  • /Users/Ben/Pictures/Location/pic1.jpg

দীর্ঘ ভ্রমণ:

  • / ব্যবহারকারী / বেন / ছবি / ট্রিপের নাম / অবস্থান 1 / pic1.jpg

  • / ব্যবহারকারী / বেন / ছবি / ট্রিপ নাম / অবস্থান 2 / pic1.jpg

এই ফোল্ডারের বেশিরভাগটিতে 'সেরা' নামে একটি সাবফোল্ডার রয়েছে, যেখানে আমি আমার প্রিয় ফটোগুলি প্যারেন্ট ফোল্ডার থেকে অনুলিপি করেছি, যার ফলে প্রতিটি ফটো নকল করে দেওয়া হয়।

যেমন

স্বল্প ভ্রমণ:

  • / ব্যবহারকারীরা / বেন / চিত্রগুলো / অবস্থান / শ্রেষ্ঠ

দীর্ঘ ভ্রমণ:

  • / ব্যবহারকারী / বেন / ছবি / ট্রিপের নাম / অবস্থান 1 / সেরা

  • / ব্যবহারকারী / বেন / ছবি / ট্রিপের নাম / অবস্থান 2 / সেরা

এনবি ছোট কিছু অ্যালবামগুলিতে এই 'সেরা' ফোল্ডারটি থাকে না।

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

যেমন মূল ফোল্ডারে রয়েছে:

  • /Users/Ben/Pictures/Location1/pic1.jpg
  • /Users/Ben/Pictures/Location1/pic2.jpg
  • /Users/Ben/Pictures/Location1/pic3.jpg

এবং 'সেরা' ফোল্ডারে রয়েছে

  • /Users/Ben/Pictures/Location1/Best/pic1.jpg
  • /Users/Ben/Pictures/Location1/Best/pic3.jpg

তারপরে আমি প্যারেন্ট ফোল্ডার থেকে পিক 1 এবং পিক 3 মুছতে এবং কেবল পিক 2 রাখতে চাই।

কোন সাহায্যের জন্য ধন্যবাদ।


1
আপনার ফোল্ডারের নকশাটি উন্নত করা যেতে পারে: Best/অনুলিপিযুক্ত জায়গাগুলির অনুলিপি ব্যবহারের পরিবর্তে অনুলিপিগুলি তৈরি করার চেয়ে আপনি লিঙ্কগুলি তৈরি করা ভাল তবে প্রতিটি জায়গার জন্য সমস্ত মূলকে একত্রে রেখেছিলেন। আপনার প্রশ্নটি ভুল: আপনি যখন ~/ফোল্ডারের বিষয়বস্তুগুলির উপসর্গ হিসাবে দেন তখন আমার ধারণা আপনার অর্থ ./, অন্যথায় ফোল্ডারগুলি অভিন্ন হবে। তদুপরি, Best/ফোল্ডারগুলি কোথায় থাকে তা আপনার প্রশ্ন থেকে কাজ করা আমার পক্ষে কঠিন find এই সমস্যাগুলি স্পষ্ট করতে দয়া করে আপনার প্রশ্ন আপডেট করুন।
এএফএইচ

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

এই পাথগুলিকে সঠিকভাবে তালিকাভুক্ত করতে, তাদের সকলেরই শুরু করা উচিত ~/Pictures/যা /Volumes/[MacHD]/Users/[UserName]/হার্ড ড্রাইভ বা ব্যবহারকারীর আসল নাম না জেনে বোঝা যায় ।
তেটসুজিন

উত্তর:


0

এখন আপনি নিজের প্রশ্নটি পরিষ্কার করে দিয়েছেন বলে আমি মনে করি আপনার কী প্রয়োজন তা আমি দেখতে পাচ্ছি: -

find /Users/Ben/Pictures/ -type d -name Best | \
     while read -r d; \
     do for f in "$d"/*; \
        do cmp "$f" "${f%/Best/*}/${f##*/Best/}" && \
           ln -sf "${f%/Best/*}/${f##*/Best/}" "$f"; \
        done; \
     done

এটি নিম্নলিখিত হিসাবে কাজ করে:

  • findসমস্ত Best/সাব ডিরেক্টরিটি সনাক্ত করতে ব্যবহার করুন ।
  • প্রাপ্ত প্রতিটি উপ-ডিরেক্টরিটির জন্য, এর প্রতিটি ফাইলকে প্যারেন্ট ফোল্ডারে মূলের সাথে তুলনা করুন।
  • যদি তারা অভিন্ন Best/হয় তবে মূল ফোল্ডারে ফাইলের লিঙ্ক সহ ফাইলটি ওভাররাইট করুন ।
  • আপনি যদি প্রতীকী লিঙ্কগুলিতে কঠোর পছন্দ করেন তবে আপনি এর ln -f ...পরিবর্তে ব্যবহার করতে পারেন ln -sf ...(হয় আপনার উদ্দেশ্য অনুসারে)।
  • মূল বিশ্লেষণকারী উপাদানগুলি হ'ল ${f%/Best/*}, যা /Best/FileNameপথের প্রান্ত থেকে সরিয়ে দেয় (একই হওয়া উচিত $d) এবং ${f##*/Best/}যা ফাইলের নামটিকে পথ থেকে পৃথক করে (একই হিসাবে হওয়া উচিত ${f##*/})।
  • আমি সাধারণত উত্তর হিসাবে সম্পূর্ণ স্ক্রিপ্ট লিখি না, তবে এর লেখার মাধ্যমে আপনাকে গাইড করার কোনও সহজ উপায় আমি দেখতে পাচ্ছি না; এটি ব্যবহার করার আগে আপনি এটি বুঝতে পেরেছেন তা নিশ্চিত করুন - echoসমালোচনামূলক lnকমান্ডের সামনে যুক্ত করুন এটি আপনার প্রত্যাশাটি কি করবে তা নিশ্চিত করার জন্য।

আমি এটি উবুন্টুতে পরীক্ষা করেছি, তবে ওএস / এক্স বাস্তবায়ন cmpএবং lnএকই পরামিতিগুলির সাথে কাজ করা উচিত।

আপনি যদি কিছু ভুল হয়ে যান তবে ডিরেক্টরি শুরু করার আগে ডিরেক্টরিগুলি ব্যাক আপ করুন।

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