বাশ শেল: .png বা .PNG ধরণের সমস্ত ফাইলের তালিকাবদ্ধ করুন?


14

বাশ স্ক্রিপ্টে, আমি কীভাবে '.png বা .PNG টাইপের সমস্ত ফাইলের জন্য বলতে পারি?

আমি চেষ্টা করছি :

for i in (`ls *.PNG` && `ls *.png`)

তবে একটি সিনট্যাক্স ত্রুটি হচ্ছে।

উত্তর:


18

আপনি যদি সমস্ত সম্ভাব্য সংমিশ্রণ চান তবে ব্যবহার করুন:

for i in *.[Pp][Nn][Gg]; do

অথবা

shopt -s nocaseglob
for i in *.png; do

যদিও এটি আপনার স্ক্রিপ্টের সমস্ত শেল গ্লোব (যেমন ওয়াইল্ডকার্ড ফাইল ম্যাচ) কেস চালা না করা পর্যন্ত সংবেদনশীল করে তুলবে shopt -u nocaseglob

আপনি যদি সত্যিই কেবল .PNG এবং .png চান (এবং না, উদাহরণস্বরূপ .PNG বা .pnG), তবে যে কোনওটি ব্যবহার করুন

shopt -s nullglob
for i in *.png *.PNG; do

অথবা

for i in *.png *.PNG; do
    [[ -e "$i" ]] || continue

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



@ লেগেন: এটি খুব বেশি কাজ করবে (`* .png * .PNG এর সমতুল্য), যদিও আপনার এখনও নাল্ল্লোব বা অস্তিত্ব পরীক্ষা প্রয়োজন।
গর্ডন ডেভিসন

5

আপনি কিছু ওয়ান-লাইনার ব্যবহার করে দেখতে পারেন

খুঁজে। -নাম "* .পিএনজি"-এক্সেক ....

অথবা

খুঁজে। -নাম "* .পিএনজি" | xargs ....


পুনরাবৃত্তি সম্পর্কে নীচে @ ইয়াবার মন্তব্যও সম্পাদনা করুন


1
এটি ডিফল্ট পুনরাবৃত্তির দ্বারা অনুসন্ধান করুন, সুতরাং একই ফলাফলটি পেতে প্রশ্নটি জিজ্ঞাসা করে, আপনাকে করতে হবে find -maxdepth 1 -iname "*.png"
ইয়াব

ইয়াব, আপনি পুরোপুরি সঠিক আমি এই দিকটি উপেক্ষা করেছি।
আলাইন পান্নেটিয়ার

1

ls এখানে প্রায় অকেজো কিন্তু রেকর্ডের জন্য এখানে আপনার প্রচেষ্টার কাছাকাছি একটি বাক্য গঠন রয়েছে:

for i in $(ls *.PNG ; ls *.png)

নোট:

  • আমি ধরে নিচ্ছি আপনি বড় এবং ছোট উভয় ছবি চান want && বিভাজকটির অর্থ কেবল পিএনজি ফাইল উপস্থিত থাকলে পিএনজি ফাইলগুলি প্রক্রিয়া করা যায়, যা সম্ভবত খুব বেশি অর্থ দেয় না।
  • কোনও প্যাটার্নের সাথে কোনও ফাইল না পাওয়া গেলে আপনার ত্রুটির বার্তা প্রদর্শিত হবে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.