MV 제외 폴더가 작동하지 않습니다

MV 제외 폴더가 작동하지 않습니다

폴더 안의 모든 파일/디렉터리를 복사하려고 하는데 다른 모든 파일이 해당 폴더 안에 있기를 원하기 때문에 한 폴더를 제외하고 싶습니다. 아래의 더 나은 데모를 위해 폴더 구조가 있습니다.

- VideosFolder
      L File1
      L File2
      L File3
      L TutorialFolder

이제는 이렇게 File1 File2 File3감동받고 싶어TutorialFolder

- VideosFolder
      L TutorialFolder
          L File1
          L File2
          L File3

이 명령을 시도했습니다

mv ~/Desktop/VideosFolder/!(TutorialFolder) TutorialFolder

그런데 이 오류가 발생해요

mv: "/home/user/Desktop/VideosFolder/!(TutorialFolder)"를 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

활성화되어 있는지 확인했는데 shopt extglob실제로 활성화되었습니다. 그래서 나는 무엇을 해야할지 모르겠습니다.

답변1

넌 그냥 달릴 수 있어

mv * TutorialFolder/

그리고 VideosFolder/. 이렇게 하면 모든 파일과 디렉터리( 로 시작하지 않음 .)가 로 이동됩니다 TutorialFolder/. 디렉터리를 자체적으로 이동할 수 없으므로 다음과 유사한 경고 메시지가 나타날 수 있습니다.

mv: cannot move 'TutorialFolder' to a subdirectory of itself, 'TutorialFolder/TutorialFolder'

이는 예상된 현상이며 mv아직 이동하지 않았음을 의미합니다 TutorialFolder.

답변2

Rsync 명령을 사용해 볼 수 있습니다. Rsync는 원격 셸을 통해 두 위치 간에 파일과 폴더를 동기화하는 빠르고 다양한 명령줄 유틸리티입니다.

 rsync -a --exclude 'TutorialFolder' ~/Desktop/VideosFolder/  ~/Desktop/VideosFolder/TutorialFolder/

답변3

다른 답변은 작동하지만 내부에 있다고 가정하면 오류를 발생시키지 않는 더 깨끗한 접근 방식은 다음과 같습니다 VideosFolder.

find . -maxdepth 1 ! \( -name TutorialFolder -o -name '.' \) -exec mv {} TutorialFolder/ \;

TutorialFolder그러면 현재 디렉토리에서 and .(현재 디렉토리 자체) 와 이름이 다른 모든 파일과 디렉토리를 찾은 다음 -exec와 함께 사용합니다.mvTutorialFolder

관련 정보