আমি এর বিপরীতটি কার্যকর করতে চাই:
find . -name "*2013*"
বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইল সন্ধান করুন যা তাদের নামে "2013" স্ট্রিং ধারণ করে না। আমি এটা কিভাবে করবো?
আমি এর বিপরীতটি কার্যকর করতে চাই:
find . -name "*2013*"
বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইল সন্ধান করুন যা তাদের নামে "2013" স্ট্রিং ধারণ করে না। আমি এটা কিভাবে করবো?
উত্তর:
কেবল:
find . ! -name '*2013*'
একটি যোগ করুন ! -type d
এছাড়াও ধরনের ফাইল বাদ দেওয়ার ডিরেক্টরি (যেমন .
নিজেই), অথবা -type f
শুধুমাত্র অন্তর্ভুক্ত করা নিয়মিত ফাইল, ফাইল অন্য সব ধরনের ব্যতীত (ডিরেক্টরি, fifos, symlinks, ডিভাইস, সকেট ...)।
*
0 বা ততোধিক অক্ষরের ক্রম মেলে তবে সাবধান হন । সুতরাং এটি ফাইলের নামগুলির প্রতিবেদন করতে পারে যা 2013
যদি এর 2013
আগে থাকে বা এমন কোনও কিছু অনুসরণ করে যা বর্তমান লোকালে বৈধ অক্ষর হিসাবে পুরোপুরি ডিকোড করা যায় না contain
যদি আপনি এমন কোনও লোকালে থাকেন যেখানে অক্ষরগুলি আলাদা আলাদা এনকোডিংয়ে এনকোড করা ফাইলের জন্য একাধিক বাইটে (ইউটিএফ -8 এর মতো) এনকোড করা যায়। উদাহরণস্বরূপ, কোনও ইউটিএফ -8 লোকালে , এটি কোনও Stéphane2013
ফাইলের প্রতিবেদন করবে যদি é
সেটি iso8859-15 অক্ষর সেট (0xe9 বাইট হিসাবে) এ এনকোড করা থাকে।
ফাইলের নামগুলি লোকেলের চরিত্রের সেটটিতে এনকোড করা আছে তা নিশ্চিত করা সেরা, তবে আপনি যদি এটির গ্যারান্টি দিতে না পারেন, তবে find
সি-লকেলে প্রায় কাজ চলছে :
LC_ALL=C find . ! -name '*2013*'
Ksh ফাইলের নাম ধরণগুলি যথেষ্ট:
# files with 2013
ls -d -- *2013*
# files without 2013
ls -d -- !(*2013*)
যদি আপনার শেলটি বাশ হয়, আপনি shopt -s extglob
এই প্যাটার্নটি ব্যবহার করার আগে আপনাকে চালনা করতে হবে (আপনি এটি নিজের মধ্যে রাখতে পারেন .bashrc
)। যদি আপনার শেলটি zsh হয় তবে আপনাকে চালানো দরকার setopt ksh_glob
(আপনি এটি নিজের মধ্যে রাখতে পারেন .zshrc
)। Zsh এছাড়াও অফার করে ls -d -- ^*2013*
, যার প্রাথমিক প্রয়োজন setopt extended_glob
।
এই ফাইলের নামগুলির সাথে আপনি কী করছেন তার উপর নির্ভর করে ls
ব্যবহার করার জন্য সঠিক কমান্ড নাও থাকতে পারে। তাদের একটি অ্যারেতে সঞ্চয় করতে store
filenames=( !(*2013*) )
for f in "${filenames[@]}"; do ...; done
এখানে "2013" এখানে একটি নির্দিষ্ট স্ট্রিং না থাকা বর্তমান ডিরেক্টরিতে সমস্ত ফাইল সন্ধান করুন:
find . ! -name "*2013*" -type f
ls
প্যাটার্নটি কোনও ফাইলের সাথে মেলে না তবে একটি ত্রুটি বার্তা ফিরে আসবে)। এছাড়াওksh
তালিকাটি বাছাই করবে তা নোট করুন ।