উত্তর:
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -print0
কাজ করবে. আরও মার্জিত উপায় হতে পারে।
find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -exec ls -l {} \;
অন্যথায় এক্সিকিউটর কেবলমাত্র শেষ অংশে প্রযোজ্য ( -iname '*.jpg'
এই ক্ষেত্রে)।
find /path/to/ -iname '*.gif' -o -iname '*.jpg' -print0
কেবল jpg ফাইল মুদ্রণ করবে! আপনার এখানে বন্ধনী প্রয়োজন:find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -print0
find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log
-E
ডান বন্ধনী এবং আপনার Regex মধ্যে পাইপ অব্যাহতি থাকার থেকে বাঁচায়।
-E
বিকল্পটি find
"বর্ধিত নিয়মিত অভিব্যক্তি" ব্যবহার করতে বলে । বেশ কয়েকটি অন্যান্য সরঞ্জামের একটি অনুরূপ বিকল্প রয়েছে তবে আমি নিশ্চিত নই যে এই বিকল্পটি সমস্ত ইউএনআইএক্স বিতরণে উপলব্ধ।
find . -regextype posix-extended -regex ".*\.(jpg|gif|png|jpeg)"
।
find -E /path/to -iregex ".*\.(jpg|gif|png|jpeg)" > log
। -iregex
পতাকাটি ব্যবহার করা find
সংবেদনশীলতার সাথে কেসের সাথে মেলে tells
find /path/to/ -type f -print0 | xargs -0 file | grep -i image
file
ফাইলের নাম (বা এক্সটেনশন) নির্বিশেষে ফাইলের ধরণটি সনাক্ত করার চেষ্টা করতে এটি কমান্ডটি ব্যবহার করে ।
যদি /path/to
বা কোনও ফাইলনামে স্ট্রিং থাকে image
তবে উপরের বোগাস হিটগুলি ফিরে আসতে পারে। সেক্ষেত্রে আমি পরামর্শ দেব
cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/
find /path -type f \( -iname "*.jpg" -o -name "*.jpeg" -o -iname "*gif" \)
-iname *.jpg
, -o -name *.jpeg
, -o -iname *gif
সমস্ত একটি সামান্য ভিন্ন বিন্যাস আছে।
যদি ফাইলগুলির কোনও এক্সটেনশন না থাকে তবে আমরা ফাইল মাইম প্রকারের জন্য সন্ধান করতে পারি
find . -type f -exec file -i {} + | awk -F': +' '{ if ($2 ~ /audio|video|matroska|mpeg/) print $1 }'
যেখানে (অডিও | ভিডিও | ম্যাট্রোস্কা | এমপিগ) মাইম প্রকারের রেজেক্স
এবং আপনি যদি এগুলি মুছতে চান:
find . -type f -exec file -i {} + | awk -F': +' '{ if ($2 ~ /audio|video|matroska|mpeg/) print $1 }' | while read f ; do
rm "$f"
done
বা extension এক্সটেনশনগুলি ছাড়া অন্য সমস্ত কিছু মুছুন:
find . -type f -exec file -i {} + | awk -F': +' '{ if ($2 !~ /audio|video|matroska|mpeg/) print $1 }' | while read f ; do
rm "$f"
done
লক্ষ্য করুন! ~ পরিবর্তে ~