Zsh
mv Foo/*(DN) Bar/
ou
setopt -s glob_dots
mv Foo/*(N) Bar/
(Oubliez le (N)si vous savez que le répertoire n'est pas vide.)
Frapper
shopt -s dotglob nullglob
mv Foo/* Bar/
Ksh93
Si vous savez que le répertoire n'est pas vide:
FIGNORE='.?(.)'
mv Foo/* Bar/
Standard (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
Si vous êtes prêt à laisser la mvcommande renvoyer un statut d'erreur même si elle a réussi, c'est beaucoup plus simple:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU find et GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Recherche standard
Si cela ne vous dérange pas de passer au répertoire source:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Voici plus de détails sur le contrôle de la correspondance des fichiers .dot dans bash, ksh93 et zsh.
Frapper
Définir l' dotgloboption .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
Il existe également la GLOBIGNOREvariable plus flexible , que vous pouvez définir comme une liste de modèles de caractères génériques séparés par des points-virgules à ignorer. Si non défini (paramètre par défaut), le shell se comporte comme si la valeur était vide si dotglobest défini et comme si la valeur l'était .*si l'option est non définie. Voir Extension du nom de fichier dans le manuel. Les répertoires omniprésents .et ..sont toujours omis, à moins que .le modèle ne corresponde explicitement au modèle.
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
Définissez la FIGNOREvariable . Si non défini (paramètre par défaut), le shell se comporte comme si la valeur était .*. Pour ignorer .et .., ils doivent être explicitement mis en correspondance (le manuel de ksh 93s + 2008-01-31 indique cela .et ..est toujours ignoré, mais cela ne décrit pas correctement le comportement réel).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
Vous pouvez inclure des fichiers de points dans un modèle en les faisant correspondre explicitement.
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Pour que l'extension soit sortie vide si le répertoire est vide, utilisez l' Noption de correspondance de modèle: ~(N)@(*|.[^.]*|..?*)ou ~(N:*|.[^.]*|..?*).
Zsh
Définir l' dot_globoption .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.et ..ne sont jamais appariés, même si le motif correspond .explicitement au premier .
% echo .*
..two .one
Vous pouvez inclure des fichiers de points dans un modèle spécifique avec le D qualificatif glob .
% echo *(D)
..two .one none zero
Ajouter le Nqualificatif de glob pour faire l'expansion sortir vide dans un répertoire vide: *(DN).
Remarque: vous pouvez obtenir des résultats d'extension noms de fichiers dans des ordres différents (par exemple, nonesuivi de .onesuivi ..two) en fonction de vos paramètres des LC_COLLATE, LC_ALLet des LANGvariables.