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 찾기 및 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
변수를.