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)sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
mv
コマンドが成功したとしてもエラーステータスを返すようにする場合は、はるかに簡単です。
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU findおよびGNU mv
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
変数があり、これをコロンで区切ったワイルドカードパターンのリストに設定して無視できます。設定されていない場合(デフォルト設定)、シェルは値がdotglob
設定されている場合は値が空であるかのように動作し.*
、オプションが設定されていない場合は値があるかのように動作します。マニュアルのファイル名拡張を参照してください。パーベイシブディレクトリ.
と..
は.
、パターンで明示的に一致しない限り、常に省略されます。
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
FIGNORE
変数を設定します。設定しない場合(デフォルト設定)、シェルは値がであるかのように動作します.*
。とを無視する.
には..
、それらを明示的に一致させる必要があります(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
glob修飾子を使用すると、特定のパターンでドットファイルを含めることができます。
% echo *(D)
..two .one none zero
N
glob修飾子を追加して、空のディレクトリで展開が空になるようにします*(DN)
。
注意:あなたは、(例えば、異なる順序でファイル名展開の結果を得ることnone
が続く.one
続く..two
の設定に基づいて)LC_COLLATE
、LC_ALL
およびLANG
変数。