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 mv
commande 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' dotglob
option .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
Il existe également la GLOBIGNORE
variable 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 dotglob
est 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 FIGNORE
variable . 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' N
option de correspondance de modèle: ~(N)@(*|.[^.]*|..?*)
ou ~(N:*|.[^.]*|..?*)
.
Zsh
Définir l' dot_glob
option .
% 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 N
qualificatif 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, none
suivi de .one
suivi ..two
) en fonction de vos paramètres des LC_COLLATE
, LC_ALL
et des LANG
variables.