উত্তর:
কমান্ড-লাইন বিকল্প ব্যবহার করুন -v
বা --invert-match
,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
অথবা
grep --invert-match
আপনি একই জিনিস ব্যবহার করে করতে পারেন find
:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
আরও তথ্য এখানে ।
find
কমান্ড এই XY সমস্যা সবচেয়ে শব্দার্থিক সমাধান। সংমিশ্রণ ls
এবং grep
এই উদ্দেশ্যে সেরা হ্যাকিং মনে হয়। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। (+1)
ফলাফলগুলি উল্টানোর -v
জন্য আপনার grep
আদেশে বিকল্প যুক্ত করুন ।
grep "subscription" | grep -v "spec"
-v
/--invert-match
রিটার্ন কোডটিgrep
কার্যকর সম্পাদন নির্দেশ করে কিনা তা অবশ্যই ফ্লিপ করবে না , তবে পরিবর্তে সেই লাইনের সাথে মিলবে যা অন্যথায় মিলে না। যারা রিটার্ন কোডটি উল্টাতে চাইছেন (অর্থাত্ লাইনগুলির সমস্ত প্যাটার্নের সাথে মেলে না তবে কমপক্ষে একটির পরিবর্তে) সফল হওয়া উচিত! grep
। এই খুঁজে বের করে শর্তসাপেক্ষ এক্সপ্রেশন মধ্যে যেমন ব্যবহার করেন,:if ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi
।