나는 이것을 전에 시도했다. 나는 전에 이런 종류의 명령을 내릴 수 있다고 맹세한다.
mv /home/user/temp1/* /home/user/temp2
기본적으로 여기에서 /superuser/273254/move-files-and-folders-recursively-in-linux 명령을 받았습니다.
왜 나에게 말하고 있는지
mv: cannot stat `/home/user/temp1/*': No such file or directory
답변
이것이 발생할 수있는 두 가지 가능한 이유를 생각할 수 있습니다.
- 소스 디렉토리가 존재하지 않을 수 있습니다 (또는)
- 소스 디렉토리가 비어있을 수 있습니다
둘 중 하나라도 무시하십시오!
답변
$USER
사용자 이름으로 확장하려면 사용자 를 사용해야 합니다. /home/user
라는 사용자가있는 경우에만 유효합니다 user
. 홈 디렉토리에 temp1
있고 temp2
존재하는 경우 작동합니다.
mv /home/$USER/temp1/* /home/$USER/temp2
답변
혼란을 조금 해결하고 해결하도록 노력하겠습니다.
-
폴더 와 그 내용을 다른 폴더로 옮기려면 다음을 입력하십시오.
mv ~/Scripts ~/Podcasts
-
폴더 자체가 아닌 폴더의 내용 을 다른 폴더로 이동하려면 예를 들어을 입력해야합니다
mv ~/Scripts/* ~/Podcasts
.echo ~/Scripts/*
폴더 내용을 확인하기 위해 입력 할 수 있습니다 -
(또한
globstar
모든 디렉토리 레벨을 통해 재귀를 허용하는 에 대해 알아야 하는 경우이 기사 및 이 문서를 참조하십시오 . shopt -s globstar로 사용할 수 있지만 영구적으로 작동하려면 .bashrc에 넣어야합니다. .)
( tilde
~에서 ~ / 스크립트는 /home/mike/
쉘에 의해 자동으로 확장 되거나 사용자 이름으로 확장됩니다 )
답변
bash를 사용하고 소스 디렉토리가 비어있는 경우 다음을 사용하여 쉘의 기본 glob 확장 동작을 수정할 수 있습니다.
shopt -s nullglob
mv
소스 디렉토리가 비어있을 때 nullglob를 활성화하고 후속 명령이 올바르게 작동하도록합니다. ls
예기치 않은 동작 과 같은 다른 명령이 발생할 수 있습니다 .
다음을 사용하여 nullglob를 다시 비활성화 할 수 있습니다.
shopt -u nullglob
자세한 내용은 여기 및 여기를 참조하십시오 .