mv : *로 통계 할 수 없습니다 이런 종류의 명령을 내릴 수 있다고 맹세한다. mv

나는 이것을 전에 시도했다. 나는 전에 이런 종류의 명령을 내릴 수 있다고 맹세한다.

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



답변

이것이 발생할 수있는 두 가지 가능한 이유를 생각할 수 있습니다.

  1. 소스 디렉토리가 존재하지 않을 수 있습니다 (또는)
  2. 소스 디렉토리가 비어있을 수 있습니다

둘 중 하나라도 무시하십시오!


답변

$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

자세한 내용은 여기여기를 참조하십시오 .


답변