라는 파일이 있습니다home/homeLife
/home에 home1 home2 및 home3이라는 파일이 저장되어 있습니다.
로 시작하는 모든 파일을 home*
이동 하고 싶습니다 home/homeLife/.
.
나는 들어갔다
mv home* /home/homeLife
cannot move homeLife into subdirectory of itself
내 질문: 디렉터리를 어떻게 제외하나요?
답변1
zsh
glob 한정자를 사용합니다 .
mv home*(.) dst
이동만정기적인문서.
하지만
mv home*(^/) dst
모든 유형의 파일 이동와는 별개로목차.
mv home*(^-/) dst
디렉토리에 대한 기호 링크도 제외됩니다.
답변2
찾기를 이용하시면 됩니다. 다음이 작동합니다.
find . -name home\* -type f -maxdepth 1 -exec mv {} /home/homeLife/. \;
답변3
Bash를 사용하여 glob을 확장할 수 있습니다.
shopt -s extglob ## activate extglogs if not yet done
mv home!(*Life) homeLife/ ## !(p1|...) = anything except one of the patt
답변4
전역 일치 목록을 편리하게 정리할 수 있습니다.
set --; cd /home
for f in ./home*
do [ ! -L "$f" ] &&
[ -f "$f" ] &&
set "$@" "$f"
done
[ "$#" -eq 0 ] || mv "$@" ./homeLife