আমি আরও উত্তর ভাগ করে নেওয়ার জন্য স্ট্যাকওভারফ্লোতে খনি হিসাবে অনুরূপ একটি প্রশ্নে ( লিনাক্স ফাইল সিস্টেমে নন-ইউটিএফ 8 ফাইল নামগুলি সন্ধান করুন ) দেরিতে ট্যাগ করার চেষ্টা করেছি , সুতরাং এখানে আবার ...
আমার উপরের লিঙ্কটিতে ওপি-র মত একই সমস্যা রয়েছে এবং নিজের ফাইল সিস্টেমটি ঠিক করার জন্য কনমভিভ একটি দুর্দান্ত সরঞ্জাম। আমার প্রশ্নটি তাই একাডেমিক, তবে আমি এটি সন্তোষজনক বলে মনে করি (বাস্তবে আমি বিশ্বাস করতে পারি না) যে 'সন্ধান' অ-মানক অ্যাসিআই চরিত্রগুলি সন্ধান করতে সক্ষম নয়।
সেখানে কি এমন কেউ আছেন যে ইউনিকোড এফএস বলে মনে হয় এমন নন-স্ট্যান্ডার্ড অক্ষর ধারণ করে এমন ফাইল নেমগুলির সন্ধানের জন্য কী বিকল্পগুলির সংমিশ্রণটি জানতে পারে, আমার ক্ষেত্রে অক্ষরগুলি ইউনিকোডের চেয়ে 8 বিট বাড়িয়ে দেওয়া বলে মনে হয়, ফাইলগুলি আসে একটি উইন্ডোজ মেশিন (আইসো -8859-1) এবং আমার নিয়মিত সেগুলি আনা দরকার। আমি কীভাবে খুঁজে পেতে এবং / অথবা গ্রেপ কনফ্যামের মতো একই কাজ করতে পারি তা দেখতে আগ্রহী।
নমুনা ফাইল:
> ls
Abc�def ÉÈéèáà-rest everest éverest
> ls -b
Abc\251def ÉÈéèáà-rest everest éverest
প্রথম ফাইলটি উইন্ডোজ থেকে আসে (বা এর সাথে সিমুলেটেড touch $(printf "Abc\xA9def")
)।
> find . -regex '.*[^a-zA-Z./].*'
./ÉÈéèáà-rest
> ls | egrep '[^a-zA-Z]'
ÉÈéèáà-rest
তাদের প্রায় সব হারিয়ে যাওয়া (হাইফেন সেই ফাইলটি সংরক্ষণ করেছে, রঙিন গ্রেপের সাথে দেখা যায়)। এখানে যা ঘটছে তা আমি প্রত্যাশা করি না তা নয়: সরবরাহ করা ব্যাপ্তির বাইরে থাকার কারণে একটিও উচ্চারণ করা চিঠিটি খুঁজে পেতে বা গ্রেপ করতে সক্ষম হয় না [^ a-zA-Z। /]।
> find . -regex '.*é.*'
./éverest
./ÉÈéèáà-rest
> ls | egrep 'é'
ÉÈéèáà-rest
éverest
> ls | egrep '[é]'
ÉÈéèáà-rest
éverest
> find . -regex '.*[é].*'
./éverest
./ÉÈéèáà-rest
উদ্ভটভাবে উভয়ই সরবরাহ করা হলে (পরিসীমা সহ) একটি মানক অ্যাকসেন্ট তুলতে সক্ষম হয়। Find xA9, \ 0251 বা \ o251 সহ কোনও সন্ধান বা গ্রেপ ট্রায়াল ব্যর্থ (কোনও মিল নেই)।
> ls | fgrep e
Abc�def
ÉÈéèáà-rest
everest
éverest
বিতর্কহীন চরিত্রের জন্য অনুসন্ধান করা সমস্ত ফাইল গ্রেপ সহ দেখায়, যেমনটি আমি প্রত্যাশা করতাম।
> find . -regex '.*e.*'
./éverest
./ÉÈéèáà-rest
./everest
> find . -name '*e*'
./éverest
./ÉÈéèáà-rest
./everest
সন্ধান করুন, তবে এটি খুব বৈষম্যমূলক: এমনকি একটি সাধারণ চরিত্রের সন্ধান করলেও আমার কাছে মনে হয় যে এটি ফাইলের নামগুলি সরিয়ে দেয় যা ফাইল সিস্টেমের নাম এনকোডিং স্কিমার জন্য গ্রহণযোগ্য অক্ষরের সীমার বাইরে অক্ষর ধারণ করে।
আমি যতদূর মনে করি যদি ফাইলটি ফাইল সিস্টেমে থাকে, তবে এটি সন্ধান করা উচিত, তাই না? তবে সম্ভবত এমন একটি বৈশিষ্ট্য আছে যা আমি জানিনা?
যে কোনও অন্তর্দৃষ্টি খুব প্রশংসা করা হবে।
LC_CTYPE=C find …
বা আরও নির্ভরযোগ্য হবেLC_ALL=C find …
। পরিবেশের পরিবর্তনশীলটির নজিরLC_ALL
প্রথম,LC_xxx
কাঙ্ক্ষিত লোকেল বিভাগের জন্য অনুপস্থিত থাকলে (এখানে সিটিপি, অর্থাত অক্ষর সেট এবং এনকোডিং), যদি অনুপস্থিত থাকেLANG
। সুতরাং ইতিমধ্যে যদি আপনিLC_CTYPE
পরিবেশে থাকেন (বিশ্বের 95% সাধারণ যাদের ভাষা ASCII তে লেখা যায় না)LANG=
কোনও জিনিস পরিবর্তন করবেন না।