ফাইল এক্সটেনশান (tilde ~) অনুসন্ধান করার জন্য যৌক্তিক এবং আইএফ বিবৃতির মধ্যে ব্যবহার করে


0

নীচের স্ক্রিপ্ট খুঁজে পেতে দয়া করে:

#!/bin/bash
for index in `ls -1 /appdata/frozen_files`
do
 for bucket in `find /appdata/frozen_files/$index -name "*.gpg~" | cut -d/ -f4-5`
   do
    for files in `ls /appdata/frozen_files/$bucket/rawdata | wc -l`
     do
      if [[ ` "$files" -eq 1 && "file extension = .gpg~" ` ]];
       then
        echo $bucket >> /tmp/NAS_buckets_with_less_than_2_files.txt
      fi
     done
   done
 done

অভিপ্রায়: আমি ফাইল এক্সটেনশান = .gpg ~ টিল্ড (~) দিয়ে শেষ করার চেষ্টা করছি। ফাইল নাম উদাহরণ = journal.gz.gpg ~ .. .gpg ~ ফাইলগুলি উপলব্ধ / অ্যাপডটা / ফোজেন_ফাইল / $ বালতি / rawdata | wc -l

আমরা একটি পরিবর্তনশীল তৈরি করতে পারেন যার মধ্যে ফাইলের এক্সটেনশান রয়েছে, সিস্টেমটি দেখতে এটির সাথে তুলনা করার কিছু আছে।

"কিছু" যা ফাইল এক্সটেনশানটি পরীক্ষা করতে পারে (.gpg ~)


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

ইচ্ছা: আমি ext = .gpg এর সাথে ফাইলটি খুঁজে বের করার চেষ্টা করছি। tilde (~) ফাইলের নাম উদাহরণ = journal.gz.gpg ~ ..gpg ~ ফাইলগুলি / appdata / frozen_files / $ bucket / rawdata এ উপলব্ধ | wc -l
Gerald Johnson

আপনার প্রশ্ন আপডেট করুন। যেহেতু আমি আপনার সমস্যাটি সমাধান করতে পারছি না তাই আমার প্রত্যাবর্তন সঠিক নয়।
AFH

উত্তর:


0

আমি নিশ্চিত নই যে তুমি যা করতে চাও তা আমি বুঝতে পারছি।

এই নামে সব ডিরেক্টরি মুদ্রণ করা হবে rawdata ভিতরে থেকে /appdata/frozen_files/ যার সাথে শেষ নামগুলির সাথে দুটি ফাইল কম থাকে .gpg~ (সাবডিরেক্টরি ফাইল rawdata গণনা করবেন না):

find /appdata/frozen_files/ -type d -name "rawdata" -exec \
   sh -c '
      cd "$1" || exit 1
      num=$(find . ! -name . -prune -type f -name "*.gpg~" -exec printf "\n" \; | wc -l)
      [ "$num" -lt 2 ]
   ' sh {} \
\; -print

পদ্ধতি হল:

  1. বহি: স্থ find সব খুঁজে rawdata ডিরেক্টরি।
  2. প্রতিটি যেমন ডিরেক্টরি জন্য sh বলা হয়; ডিরেক্টরি হিসাবে পাওয়া যায় "$1" প্রদত্ত আদেশ ভিতরে।
  3. এই শেল cd -s ডিরেক্টরি থেকে এবং ভিতরের রান find
  4. এই find প্রত্যেকের জন্য একটি নতুন লাইন প্রিন্ট *.gpg~ ডিরেক্টরি সরাসরি ফাইল।
  5. এই newlines দ্বারা গণনা করা হয় wc
  6. ফলাফল (সংখ্যা) হিসাবে সংরক্ষণ করা হয় num পরিবর্তনশীল।
  7. এর চেয়ে কম হলে ফলাফল পরীক্ষা করা হয় 2
  8. পরীক্ষা সফল হয়, বাইরের find ডিরেক্টরি প্রিন্ট।

নোট:

  • পোর্টেবিলিটি এবং POSIX সম্মতির কারণে কিছু সমাধান আছে:
    • ! -name . -prune পরিবর্তে -maxdepth 1,
    • -exec printf "\n" \; পরিবর্তে -printf "\n"
  • পরিবর্তনশীল ব্যবহার করা হয় যাতে এটি পুনঃব্যবহৃত করা যেতে পারে, যেমন .:

    [ \( "$num" -gt 2 \) -a \( "$num" -lt 10 \) ]
    
  • ব্যবহার -print0 পরিবর্তে -print যদি আপনি একটি নিরাপদ ভাবে আউটপুট পার্স করতে হবে।

  • আউটপুট পার্স অথবা কমান্ডটি সংশোধন করুন যাতে আপনার প্রতিটি পাথের একটি অংশ বের করা যায়; উদাহরণস্বরূপ পরিবর্তে -print আপনি ব্যবহার করতে পারেন:

    -exec sh -c 'basename "$(dirname "$1")"' sh {} \;
    

    প্রত্যেকের প্যারেন্ট ডিরেক্টরি প্রাপ্ত করার জন্য rawdata যে মানদণ্ড মেলে।

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