আপনি যদি ডিরেক্টরি হায়ারার্কির সমস্ত ফাইল একটি একক গন্তব্য ডিরেক্টরিতে বাশ ≥4 ( shopt -s globstar
আপনার মধ্যে রাখুন ~/.bashrc
) বা zsh তে সরিয়ে নিতে চান:
mkdir ~/new-directory
mv -i **/*.xxx ~/new-directory
অন্যান্য শেলগুলিতে:
mkdir ~/new-directory
find . -name '*.xxx' -exec mv -i {} ~/new-directory \;
এই find
আদেশটি কীভাবে পড়বেন :
.
: বর্তমান ডিরেক্টরিটি অতিক্রম করুন
-name '*.xxx'
: এই নামগুলির সাথে এই নামগুলির সাথে মেলে এমন ফাইলগুলিতে কাজ করুন
-exec … \;
: প্রতিটি ফাইলে এই কমান্ডটি সম্পাদন করুন, ফাইলের {}
পাথের পরিবর্তে
আরও জটিল কমান্ড রয়েছে যা find
এটি দ্রুত ব্যবহার করে যদি আপনার অনেকগুলি ফাইল থাকে তবে mv
প্রতিটি ফাইলের জন্য পৃথক প্রক্রিয়া শুরু করার প্রয়োজন নেই :
find . -name '*.xxx' -exec sh -c 'mv -i "$@" "$0"' ~/new-directory {} +
+
শেষে বলে find
একটি সময়ে একাধিক ফাইল কমান্ড ডাকা। যেহেতু find
কেবলমাত্র কমান্ড লাইনের শেষে ফাইলের নাম রাখা mv
যেতে পারে এবং গন্তব্য ডিরেক্টরিটি সর্বশেষে থাকা দরকার তাই আমরা আর্গুমেন্টগুলি পুনরায় সাজানোর জন্য একটি মধ্যবর্তী শেল ব্যবহার করি ( "$0"
শেলের প্রথম আর্গুমেন্ট ~/new-directory
, এবং "$@"
পরবর্তী যুক্তিগুলি থেকে আসে find
এর সম্প্রসারণ {}
)।