रेगेक्स यहां शामिल नहीं हैं। बैश में वाइल्डकार्ड (अधिकांश अन्य गोले की तरह) केवल फ़ाइल नामों के आधार पर फाइलों से मेल खाते हैं, फ़ाइल प्रकार या अन्य विशेषताओं के आधार पर नहीं। प्रकार से मिलान करने का एक तरीका है: /
पैटर्न के अंत में जोड़कर यह केवल निर्देशिकाओं या निर्देशिकाओं के प्रतीकात्मक लिंक से मेल खाता है। इस तरह, आप निर्देशिकाओं को स्थानांतरित कर सकते हैं, फिर जो बचा है उसे स्थानांतरित कर सकते हैं, और निर्देशिकाओं को वापस ले जा सकते हैं - बोझिल लेकिन यह काम करता है।
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