এটি পার্স করা lsবা পাইপ করা নিরাপদ নয় find[ 1 , 2 ]
lsবা এর আউটপুট পার্স করা (এবং পাইপ করা) নিরাপদ নয় find, মূলত কারণ ফাইলের নামগুলিতে নিউলাইন , ট্যাব হিসাবে সাধারণ অক্ষরগুলি খুঁজে পাওয়া সম্ভব ... এখানে একটি খাঁটি শেল চক্র কাজ করবে [ কিউংএলএম ] ।
এমনকি বিকল্পটি দিয়ে পাইপ না করাfind কমান্ডটিও কাজ করবে:-exec
find ./*.png -exec basename {} .png \;
আপডেটস / নোটস : আপনি find .এমনকি লুকানো ফাইলগুলি অনুসন্ধান করতে বা find ./*.pngশুধুমাত্র গোপনীয় ফাইলগুলি পেতে ব্যবহার করতে পারেন । সঙ্গে find *.png -exec ...আপনি সমস্যা থাকতে পারে এটা নামের একটি ফাইল উপস্থিত ছিলেন .pngকারণ খুঁজে একটি বিকল্প যেমন পাবেন। আপনি -maxdepth 0যেমন ডিরেক্টরিতে নাম অন্তর্ভুক্ত করা এড়ানোর জন্য যোগ করতে পারেন Dir_01.png, বা find ./*.png -prune -exec ...যখন ম্যাক্সডেপথের অনুমতি নেই (ধন্যবাদ স্টাফেন)। আপনি যদি সেই ডিরেক্টরিগুলি তালিকাবদ্ধ করতে এড়াতে চান তবে আপনার বিকল্পটি যুক্ত করা উচিত -type f(এটি অন্যান্য ধরণের নিয়মিত ফাইলগুলিও বাদ দেয়)। manউপলভ্য সমস্ত বিকল্প সম্পর্কে আরও সম্পূর্ণ প্যানোরামা দেখার জন্য এটি দেখুন এবং আরও ভাল বহনযোগ্যতার জন্য তারা কখন পসিক্স অনুগত হয় তা পরীক্ষা করে দেখুন।
আরও কিছু শব্দ
এটি ঘটতে পারে, উদাহরণস্বরূপ, কোনও দস্তাবেজ থেকে শিরোনাম অনুলিপি করা এবং ফাইলনামে আটকানো, এক বা একাধিক নতুন লাইন ফাইলের নামেই শেষ হবে। আমরা এমনকি এত দুর্ভাগ্যজনক হতে পারি যে কোনও শিরোনামে এমনকি একটি নতুন লাইনের ঠিক আগে ব্যবহার করতে হবে এমন কীটিও থাকতে পারে:
The new art of working on .png
files and other formats.
আপনি যদি পরীক্ষা করতে চান তবে আপনি কমান্ডগুলি দিয়ে ফাইলের নাম তৈরি করতে পারেন
touch "A file with two lines"$'\n'"and This is the second.png"
touch "The new art of working on .png"$'\n'"files and other formats.png"
মুদ্রণযোগ্য অক্ষরের পরিবর্তে সরল /bin/ls *pngউইল আউটপুট?
A file with two lines?and This is the second.png
The new art of working on .png?files and other formats.png
সব ক্ষেত্রেই যা আপনি হবে মধ্যে নল আউটপুট এর lsবা findনিম্নলিখিত কমান্ড বুঝতে যদি বর্তমান লাইন একটি নতুন থেকে আসে কোন ইঙ্গিত থাকবে ফাইলের নাম বা যদি এটি একটি অনুসরণ সম্পর্কে newline নজির চরিত্রের ফাইলের নাম । একটি বাজে নাম প্রকৃতপক্ষে, কিন্তু এখনও একটি আইনী নাম।
একটি শেল প্যারামিটার-সম্প্রসারণ সঙ্গে একটি শেল চক্রের ${parameter%word}সঙ্গে উভয় বৈকল্পিক মধ্যে printfবা echoকাজ করবে [ cuonglm ], [ Anthon1 ] ।
for f in *.png; do printf "%s\n" "${f%.png}" ; done
শেল প্যারামিটার সম্প্রসারণের ম্যান পৃষ্ঠা থেকে [ 3 ]
me {প্যারামিটার% শব্দ}
$ {প্যারামিটার %% শব্দ}
... সম্প্রসারণের ফলাফলটি হ'ল সংক্ষিপ্ত মিলের প্যাটার্ন ('%' কেস) বা দীর্ঘতম মিলনের প্যাটার্ন ('%%' কেস) মুছে ফেলা পরামিতির মান।
.মধ্যে অন্তর্ভুক্ত থাকতে পারে বা নাও পারে । যদিও সম্মেলন সঙ্গে আপনার ফাইল নাম বলছেন.pngশেষে, কোন কারণে আমি একটি PNG ফাইল নামে থাকতে পারে না হয়foo.zipবাmy.picture.20160518বা শুধুmypic।