উত্তর:
কমান্ড-লাইন বিকল্প ব্যবহার করুন -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।