এটি শেল যা কমান্ড নয়, ওয়াইল্ডকার্ডগুলি প্রসারিত করে। সুতরাং cp dir1/* dir2/*প্রথমে দুটি ওয়াইল্ডকার্ড প্রসারিত করে, তারপরে cpফলাফলটি কল করে। এই সব হয় না কি দৃশ্যত আশা: কিভাবে অনেক ফাইল সেখানে ইতিমধ্যেই আছে তার উপর নির্ভর করে dir2, dir2/*এক বা একাধিক যুক্তি প্রসারিত হতে পারে। কমান্ডটি cpজানে না যে এর প্রথম যুক্তিটি প্রসারণের মধ্য দিয়ে কোনটি আর্গুমেন্ট এসেছে এবং দ্বিতীয় প্যাটার্নটি প্রসারিত করে কোনটি এসেছে। এটি তার শেষ যুক্তিটিকে গন্তব্য ডিরেক্টরিটির নাম হিসাবে প্রত্যাশা করে। সুতরাং, ডিরেক্টরি থেকে সব ফাইল কপি করতে dir1ডিরেক্টরির মধ্যে dir2গত যুক্তি ডিরেক্টরির হওয়া আবশ্যক dir2:
cp dir1/* dir2
যেহেতু *সমস্ত ফাইলের সাথে মেলে, সমস্ত ফাইল cpঅনুলিপি করার চেষ্টা করে। এর মধ্যে ডিরেক্টরি রয়েছে: ডিরেক্টরিগুলি ফাইলও। এটি ডিরেক্টরিগুলি এড়িয়ে যায়, তবে একটি ত্রুটির খবর দেয়। এটি নামকৃত পাইপগুলির মতো বিশেষ ফাইলগুলির বিষয়বস্তু অনুলিপি করে (তাদের কাছে আরও ভাল কিছু লেখা ছিল, বা cpঅবরুদ্ধ হবে) ইত্যাদি etc.
কেবল নিয়মিত ফাইলগুলি অনুলিপি করতে আপনার মিলটি সীমাবদ্ধ করতে হবে। Zsh এ, আপনি তার জন্য গ্লোব যোগ্যতা ব্যবহার করতে পারেন .:
cp dir1/*(.) dir2
অন্যান্য শেলগুলিতে এটি নেই। আপনি findফাইলের ধরণের ফিল্টার করতে কমান্ডটি ব্যবহার করতে পারেন । ধরে নিই যে আপনি অ-এমবেডেড লিনাক্স বা সিগউইন চালাচ্ছেন:
find dir1 -maxdepth 1 -type f -exec cp -t dir2 {} +
লিনাক্স, ফ্রিবিএসডি এবং ওএসএক্সে:
find dir1 -maxdepth 1 -type f | xargs -I {} cp {} dir2