정규식은 여기에 관여하지 않습니다. bash의 와일드 카드 (대부분의 다른 쉘과 마찬가지로)는 파일 유형이나 기타 특성이 아닌 파일 이름을 기준으로 파일 만 일치합니다. 유형별로 일치하는 한 가지 방법이 있습니다 /
. 패턴 끝에 추가 하면 디렉토리 또는 디렉토리에 대한 기호 링크 만 일치합니다. 이 방법으로 디렉토리를 이동 한 다음 남은 것을 이동하고 디렉토리를 다시 이동할 수 있습니다. 번거롭지 만 작동합니다.
tmp=$(TMPDIR=.. mktemp -d)
mv -- */ "$tmp"
mv -- * "$tmp"/other_directory/
mv "$tmp"/* .
rmdir "$tmp"
유형별로 파일을 일치시키는 표준 방법은을 호출하는 것 find
입니다.
find . -name . -o -type d -prune -o -exec sh -c 'mv "$@" "$0"' other_directory/ {} +
zsh에서는 glob 한정자 를 사용 하여 유형별로 파일을 일치 시킬 수 있습니다 . .
규정은 일반 파일과 일치; 사용 ^/
, 또는 이외의 모든 디렉토리에 맞게 -^/
또한 디렉토리에 심볼릭 링크를 포함합니다.
mv -- *(.) other_directory/
모든 쉘에서 간단하게 반복 할 수 있습니다.
for x in *; do
if ! [ -d "$x" ]; then
mv -- "$x" other_directory/
fi
done