ধরে নিই যে "বিদেশী" এর অর্থ "ASCII চরিত্র নয়", তারপরে আপনি find
সমস্ত ফাইলের নামে মুদ্রণযোগ্য ASCII অক্ষর না থাকা সন্ধানের জন্য একটি প্যাটার্ন দিয়ে ব্যবহার করতে পারেন :
LC_ALL=C find . -name '*[! -~]*'
(স্থানটি http://www.asciable.com/ এ তালিকাভুক্ত প্রথম মুদ্রণযোগ্য অক্ষর , ~
এটি সর্বশেষ)
এর জন্য ইঙ্গিতটি LC_ALL=C
প্রয়োজনীয় (প্রকৃতপক্ষে LC_CTYPE=C
এবং LC_COLLATE=C
), অন্যথায় অক্ষরের পরিসরটি ভুলভাবে ব্যাখ্যা করা হয়। ম্যানুয়াল পৃষ্ঠাটিও দেখুন glob(7)
। যেহেতু স্ট্রিংগুলিকে ASCII হিসাবে ব্যাখ্যা করার LC_ALL=C
কারণ রয়েছে তাই find
এটি বহু-বাইট অক্ষর (যেমন π
) প্রশ্ন চিহ্ন হিসাবে মুদ্রণ করবে । এটি ঠিক করতে কিছু প্রোগ্রামে পাইপ (যেমন cat
) বা ফাইলে পুনর্নির্দেশ করুন।
চরিত্রের ব্যাপ্তি নির্দিষ্ট করার পরিবর্তে, [:print:]
"মুদ্রণযোগ্য অক্ষর" নির্বাচন করতেও ব্যবহার করা যেতে পারে। সি লোকেল সেট করা নিশ্চিত করুন বা আপনি বেশিরভাগ (আপাতদৃষ্টিতে) স্বেচ্ছাচারী আচরণ পান।
উদাহরণ:
$ touch $(printf '\u03c0') "$(printf 'x\ty')"
$ ls -F
dir/ foo foo.c xrestop-0.4/ xrestop-0.4.tar.gz π
$ find -name '*[! -~]*' # this is broken (LC_COLLATE=en_US.UTF-8)
./x?y
./dir
./π
... (a lot more)
./foo.c
$ LC_ALL=C find . -name '*[! -~]*'
./x?y
./??
$ LC_ALL=C find . -name '*[! -~]*' | cat
./x y
./π
$ LC_ALL=C find . -name '*[![:print:]]*' | cat
./x y
./π