Zsh
mv Foo/*(DN) Bar/
lub
setopt -s glob_dots
mv Foo/*(N) Bar/
(Pomiń, (N)jeśli wiesz, że katalog nie jest pusty).
Grzmotnąć
shopt -s dotglob nullglob
mv Foo/* Bar/
Ksh93
Jeśli wiesz, że katalog nie jest pusty:
FIGNORE='.?(.)'
mv Foo/* Bar/
Standardowy (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
Jeśli chcesz, aby mvpolecenie zwróciło status błędu, nawet jeśli się powiodło, jest to o wiele prostsze:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU find i GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Znalezienie standardowe
Jeśli nie przeszkadza ci przejście do katalogu źródłowego:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Oto więcej szczegółów na temat kontrolowania, czy pliki kropek są dopasowane w bash, ksh93 i zsh.
Grzmotnąć
Ustaw dotglobopcję .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
Istnieje również bardziej elastyczna GLOBIGNOREzmienna , którą można ustawić na listę wzorców symboli wieloznacznych oddzielonych dwukropkami, które mają być ignorowane. Jeśli nie jest ustawiony (ustawienie domyślne), powłoka zachowuje się tak, jakby wartość była pusta, jeśli dotglobjest ustawiona, i tak, jakby wartość była, .*jeśli opcja była nieaktywna. Zobacz Rozszerzenie nazwy pliku w instrukcji. Wszechobecna katalogów .i ..zawsze są pominięte, chyba że .jest dopasowany dosłownie przez wzorzec.
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
Ustaw FIGNOREzmienną . Jeśli nieustawione (ustawienie domyślne), powłoka zachowuje się tak, jakby była to wartość .*. Aby zignorować .i .., należy je jednoznacznie dopasować (instrukcja w ksh 93s + 2008-01-31 stwierdza, że .i ..zawsze są ignorowane, ale nie opisuje to poprawnie faktycznego zachowania).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
Możesz dodać pliki kropek do wzorca , dopasowując je jawnie.
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Aby rozszerzenie było puste, jeśli katalog jest pusty, użyj Nopcji dopasowania wzorca: ~(N)@(*|.[^.]*|..?*)lub ~(N:*|.[^.]*|..?*).
Zsh
Ustaw dot_globopcję .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.i ..nigdy nie są dopasowywane, nawet jeśli wzorzec .wyraźnie pasuje do wiodącego .
% echo .*
..two .one
Możesz dołączyć pliki kropek według określonego wzorca z D kwalifikatorem glob .
% echo *(D)
..two .one none zero
Dodaj Nkwalifikator glob aby ekspansję wyjdzie pusty w pustym katalogu: *(DN).
Uwaga: można uzyskać nazwy pliku wyników dylatacyjnych w różnych zleceń (np nonenastępnie .onenastępuje ..two) w oparciu o ustawieniach tych LC_COLLATE, LC_ALLoraz LANGzmiennych.