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
चर।