না।
দ্য cp
কমান্ড নিয়মিত এক্সপ্রেশন হিসাবে তার আর্গুমেন্ট কোন প্রক্রিয়া করার ক্ষমতা ভোগদখল না। এমনকি ওয়াইল্ডকার্ডগুলি এটি দ্বারা পরিচালিত হয় না (বা সর্বাধিক এক্সিকিউটেবল); বরং তারা শেল দ্বারা পরিচালিত হয়।
cp test/* test2/
আসলে bash দ্বারা প্রসারিত হয়, এবং যে সব cp
সত্যিই তার আর্গুমেন্ট জন্য দেখায় cp test/file1 test/file2 test/file3 test2/
(বা প্রকৃত বিষয়বস্তু উপর ভিত্তি করে উপযুক্ত যাই হোক না কেন test/
)।
এছাড়াও, আমি আপনার মতামত মনে করি না, [^\.php]
, আপনি এটি করতে চান কি মেলে হবে (এটি ধারণকারী ফাইল শুধুমাত্র মেলে না .php
)।
আপনি সম্ভবত সন্ধান করতে চান find
নিয়মিত এক্সপ্রেশন উপর ভিত্তি করে ফাইলের একটি তালিকা ফিল্টার করার জন্য ইউটিলিটি, এবং তারপর ব্যবহার করুন xargs
ফিরে ফাইল তালিকা আবেদন করতে cp
কমান্ড (অনুমান করা ফাইলগুলির অনুলিপি করার জন্য একটি অন্তর্নির্মিত হ্যান্ডলার নেই; আমি সরঞ্জামটির সাথে গভীরভাবে পরিচিত নই)।
আপনি চেষ্টা করতে পারেন:
find . ! -iregex ".*\.php.*" -exec cp {} /destination/folder/ \;
এই ফাইলের জন্য ক্রমাগত বর্তমান ডিরেক্টরি অনুসন্ধান করে যা "পাথ" .php ধারণ করে না এবং তাদের অনুলিপি করে /destination/folder/
।
অনুরোধ করা হয়েছে, আর্গুমেন্টগুলির একটি আরও স্পষ্ট বিভাজন:
.
- অনুসন্ধান শুরু করার জন্য অবস্থান - এই ক্ষেত্রে, বর্তমান ডিরেক্টরি
!
- "না" অপারেটর, পরবর্তী পরীক্ষা ফলাফল বিপর্যস্ত
-iregex
- কেস-অসংবেদক নিয়মিত এক্সপ্রেশন পরীক্ষা। পরবর্তী যুক্তি অভিব্যক্তি।
".*\.php.*"
নিয়মিত অভিব্যক্তি মিলেছে <Anything>.php<Anything>
- যে কোনও ফাইলের মধ্যে ".php" আছে কোথাও। (নোট, নামের মধ্যে ".php" ধারণকারী একটি ফোল্ডারের ভিতরে থাকার সাথে সাথে, শুধুমাত্র ফাইলগুলি মিলানোর জন্য আপনাকে আরো জটিল অভিব্যক্তি প্রয়োজন)
-exec
পূর্ববর্তী পরীক্ষা সত্য ফিরে যদি একটি কমান্ড সঞ্চালন। পরবর্তী যুক্তি কমান্ড, পর্যন্ত সব অবশিষ্ট আর্গুমেন্ট ;
কমান্ড পাস করা হয়। দ্য {}
ফাইলনাম নামক একটি বিশেষ যুক্তি।
cp
- যে কমান্ডটি পাওয়া যায় সেটি মিলে যাওয়া প্রতিটি পাথের নামগুলিতে চালানো উচিত।
{}
- খুঁজে পাওয়া যায় যে ফাইলের পথ, পাস cp
একটি যুক্তি হিসাবে যাতে এটি কপি ফাইল কি জানেন
/destination/folder/
- যুক্তি পাস cp
, বলছেন cp
যেখানে এটি ফাইল অনুলিপি করা উচিত।
\;
- এই ;
টার্মিনেটর যে -exec
খোঁজ করা. আমরা এটি দিয়ে পালাতে \
যাতে আপনার শেল এটি বিশ্লেষণ করার চেষ্টা করে না এবং পরিবর্তে কমান্ডের একটি যুক্তি হিসাবে এটি ফিড করে ( find
)
একটি নিয়মিত অভিব্যক্তি লিখতে বরং এটি কঠিন যা "স্ট্রিং যা আছে না .php
", তাই আমরা পরিবর্তে বলুন find
যে স্ট্রিং জন্য অনুসন্ধান করুন করা ধারণ করা .php
এবং তারপর সঙ্গে ফলাফল বিপর্যস্ত !
।
find . -name [^\.php] -exec cp {} /path/to/location \;
বিশেষ অক্ষর সঙ্গে ফাইল জন্য সতর্কতা অবলম্বন করা আবশ্যক।