উত্তর:
এটি আপনি যা খুঁজছেন তা করে:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
এর findপরিবর্তে এটি ব্যবহার করে ls, সাধারণত, পার্সিং lsআউটপুট অবিশ্বাস্য । এই ফর্মটি ব্যবহার findকরেও ফাইলনামগুলির সাথে কাজ করবে এমনকি তাতে নতুন লাইন বা অন্যান্য কঠিন অক্ষর রয়েছে।
ব্যাখ্যা
find . -maxdepth 1 -type f -print0
এটি ফাইল নির্বাচন করে। এটি অনেকগুলি বিকল্পের বিকল্প ব্যবহার করে কাস্টমাইজ করা যায়। বিকল্পটি নাল-বিচ্ছিন্ন তালিকায় ফাইলের নাম মুদ্রণ করতে print0বলে find। ফাইলের নামের তালিকা এইভাবেই প্রেরণযোগ্য reliable
xargs -L1 -p0 chmod +x
এটি ফাইলের নামের নাল-বিচ্ছিন্ন তালিকাটি তৈরি করে findএবং এতে আপনার আদেশটি প্রয়োগ করে।
-L1বিকল্প বলে xargsএকবারে শুধুমাত্র একটি ফাইল নামের উপর কাজ করে। -pবিকল্প বলে xargsচালিয়ে যাওয়ার আগে অনুমোদনের জন্য প্রম্পট করতে। -0বিকল্প বলে xargsফাইলের নাম মধ্যে বিভেদক হিসাবে নাল অক্ষর ব্যবহার করতে।
[ @ কোয়ান এটি নির্দেশ না -pকরা xargsপর্যন্ত আমি বিকল্পটি সম্পর্কে অসচেতন ছিলাম ।]
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.সুতরাং এটি সঙ্গে কাজ করে -maxdepth 1সামনে -type f, যেমন: find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x।
আপনি ব্যবহার করতে পারেন xargs।
উদাহরণ:
ls|xargs -I path -p chmod +x path
বিকল্প -p: প্রতিটি কমান্ড লাইন চালাতে হবে এবং টার্মিনাল থেকে একটি লাইন পড়তে হবে কিনা সে সম্পর্কে ব্যবহারকারীকে অনুরোধ করুন। 'Y' বা 'Y' দিয়ে প্রতিক্রিয়া শুরু হলে কেবল কমান্ড লাইনটি চালান।
xargs -pএত পছন্দ করি যে আমি এটি অনুলিপি করব।
touch "a very long file nameএন্টার টিপুন। লাইন ধারাবাহিকতা দেখুন এবং কেবল সমাপ্তি উদ্ধৃতি টাইপ করুন এবং আবার এন্টার টিপুন। টেডা, ফাইলনেলে নতুন লাইন। দীর্ঘ ফাইলের নামটি টাইপ করতে অলসতার বাইরে।
findPOSIX কমান্ডটি ব্যবহার করে সামঞ্জস্য করতে পারেন-exec printf '%s\0' {} +। যদিও POSIX পুরো জিনিসটি সামঞ্জস্য করার কোনও উপায় নেই।