Zsh
mv Foo/*(DN) Bar/
या
setopt -s glob_dots
mv Foo/*(N) Bar/
( (N)यदि आप जानते हैं कि निर्देशिका खाली नहीं है तो बाहर छोड़ दें ।)
दे घुमा के
shopt -s dotglob nullglob
mv Foo/* Bar/
Ksh93
यदि आप जानते हैं कि निर्देशिका खाली नहीं है:
FIGNORE='.?(.)'
mv Foo/* Bar/
मानक (POSIX) श
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
यदि आप mvकमांड को त्रुटि स्थिति में वापस आने देने के लिए तैयार हैं , भले ही वह सफल हो, यह बहुत आसान है:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
जीएनयू खोजें और जीएनयू एम.वी.
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
मानक खोजें
यदि आपको स्रोत निर्देशिका में परिवर्तन करने में कोई आपत्ति नहीं है:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
यह नियंत्रित करने के बारे में अधिक विवरण है कि क्या डॉट फाइलें bash, ksh93 और zsh में मेल खाती हैं।
दे घुमा के
dotglobविकल्प सेट करें ।
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
वहाँ भी अधिक लचीला GLOBIGNOREचर है , जिसे आप अनदेखा करने के लिए वाइल्डकार्ड पैटर्न की एक अलग-अलग सूची में सेट कर सकते हैं। यदि unset (डिफ़ॉल्ट सेटिंग), शेल ऐसा व्यवहार करता है मानो यदि dotglobसेट किया गया था तो मान रिक्त था , और मान .*मानें कि यदि विकल्प उपलब्ध नहीं है। मैनुअल में फाइलनाम विस्तार देखें । जब तक पैटर्न द्वारा स्पष्ट रूप से मिलान नहीं किया जाता है, तब तक व्यापक निर्देशिकाएं .और ..हमेशा छोड़ी जाती हैं .।
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
FIGNOREचर सेट करें । यदि unset (डिफ़ॉल्ट सेटिंग), शेल मान के रूप में व्यवहार करता है .*। उपेक्षा करने के लिए .और .., उन्हें स्पष्ट रूप से मिलान किया जाना चाहिए (ksh 93s + 2008-01-31 में मैनुअल बताता है कि .और ..हमेशा अनदेखा किया जाता है, लेकिन यह वास्तविक व्यवहार का सही वर्णन नहीं करता है)।
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
आप उन्हें स्पष्ट रूप से मिलान करके एक पैटर्न में डॉट फाइलें शामिल कर सकते हैं ।
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
यदि निर्देशिका खाली है, तो विस्तार खाली है, Nपैटर्न मिलान विकल्प का उपयोग करें : ~(N)@(*|.[^.]*|..?*)या ~(N:*|.[^.]*|..?*)।
Zsh
dot_globविकल्प सेट करें ।
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.और ..कभी भी मिलान नहीं किया जाता है, भले ही पैटर्न .स्पष्ट रूप से अग्रणी से मेल खाता हो ।
% echo .*
..two .one
आप D ग्लोब क्वालिफायर के साथ एक विशिष्ट पैटर्न में डॉट फाइलें शामिल कर सकते हैं ।
% echo *(D)
..two .one none zero
Nएक खाली निर्देशिका में विस्तार को खाली करने के लिए ग्लोब क्वालिफायर जोड़ें *(DN):।
नोट: यदि आप विभिन्न क्रम में फ़ाइल नाम विस्तार परिणाम (जैसे, मिल सकता है none, जिसके बाद .oneके बाद ..two) की अपनी सेटिंग के आधार पर LC_COLLATE, LC_ALLऔर LANGचर।