রেজেক্স এখানে জড়িত নেই। ব্যাশের ওয়াইল্ডকার্ডস (অন্যান্য শাঁসের মতো) কেবল ফাইলের নামের উপর ভিত্তি করে ফাইলগুলি মেলে, ফাইলের ধরণ বা অন্যান্য বৈশিষ্ট্যের ভিত্তিতে নয়। প্রকার অনুসারে মেলানোর একটি উপায় রয়েছে: /
প্যাটার্নের শেষে যুক্ত করা এটি কেবল ডিরেক্টরি বা ডিরেক্টরিতে প্রতীকী লিঙ্কগুলির সাথে মেলে। এইভাবে, আপনি ডিরেক্টরিগুলি সরাতে পারেন, তারপরে যা বাকী রয়েছে সেগুলি সরিয়ে নিয়ে যেতে পারেন এবং ডিরেক্টরিগুলি পিছনে স্থানান্তর করতে পারেন - জটিল তবে এটি কাজ করে works
tmp=$(TMPDIR=.. mktemp -d)
mv -- */ "$tmp"
mv -- * "$tmp"/other_directory/
mv "$tmp"/* .
rmdir "$tmp"
একটি আদর্শ উপায় টাইপ করে ফাইল মেলে কল হয় find
।
find . -name . -o -type d -prune -o -exec sh -c 'mv "$@" "$0"' other_directory/ {} +
Zsh এ, আপনি টাইপ অনুসারে ফাইলগুলি ম্যাচ করতে গ্লোব কোয়ালিফায়ার ব্যবহার করতে পারেন । .
কোয়ালিফায়ার নিয়মিত ফাইল মিলবে ^/
সমস্ত অ-ডিরেক্টরি মেলাতে ব্যবহার করতে বা ডিরেক্টরিতে -^/
প্রতীকী লিঙ্কগুলি অন্তর্ভুক্ত করতে ব্যবহার করুন।
mv -- *(.) other_directory/
যে কোনও শেলের মধ্যে আপনি কেবল লুপ করতে পারেন।
for x in *; do
if ! [ -d "$x" ]; then
mv -- "$x" other_directory/
fi
done