태그 보관물: files

files

현재 폴더의 모든 파일을 하위 폴더로 이동하는 방법은 무엇입니까? 다운로드 폴더의 모든 파일과 폴더

나는 길에있다 :

/myuser/downloads/

그리고 하위 폴더를 만듭니다.

/myuser/downloads/new

이제 다운로드 폴더의 모든 파일과 폴더 / 하위 폴더를 하위 폴더로 옮기고 싶습니다.

어떻게해야합니까?

나는 시도했다 :

mv -R *.* new/

그러나 이동은 -R 스위치를 사용하지 않습니다.



답변

명령

mv !(new) new

트릭을해야합니다. 작동하지 않으면 shopt -s extglob먼저 실행하십시오 .

숨겨진 파일 / 디렉토리 (도트로 시작)를 이동하려면 shopt -s dotglob먼저 실행하십시오 .
요약하자면 다음과 같습니다.

shopt -s extglob dotglob
mv !(new) new
shopt -u dotglob

( dotglob나쁜 놀라움을 피하기 위해 항상 설정 을 해제 하는 것이 좋습니다 ).


답변

나는 이와 같은 것을 찾았지만 이해하기가 조금 더 간단하며 당신에게도 잘 작동 할 수 있습니다.

ls | grep -v new | xargs mv -t new

위의 솔루션에 설명 추가하기 :

매뉴얼 페이지에서 :

  • mv -t

    -t, --target-directory=DIRECTORY
          move all SOURCE arguments into DIRECTORY
    
  • grep -v

    -v, --invert-match
          Invert the sense of matching, to select non-matching lines.
    

단계별 설명 :

  • ls 현재 디렉토리의 파일을 나열합니다
  • grep -v new 새것과 일치하지 않는 파이프를 반환합니다.
  • xargs mv -t new파이프 된 파일 grep -v을 대상 디렉토리 로 이동합니다.

답변

간단한 생각. / myuser 에 있다고 가정하고 다운로드 이름 을 new로 바꾸고 새 다운로드 디렉토리를 작성한 다음 디렉토리로 이동 하십시오.

mv downloads new # downloads is now called new
mkdir downloads # create new directory downloads
mv new downloads # move new into it.


답변

폴더의 모든 파일을 하위 폴더 중 하나로 옮기려면 다음 명령을 사용할 수 있습니다.

find /myuser/downloads/ -type d -name 'new' -prune -type f | xargs mv -t /myuser/downloads/new

모든 파일을 찾은 다음 하위 폴더로 옮깁니다.

@waltinator :의 -type d -name 'new' -prune통과를 방지하기 위해 추가되었습니다 /myuser/downloads/new.


답변

이 대체 과정을 시도해 볼 수 있습니다 – – 경로에 남아

/myuser/downloads/

하지만, 대신에 먼저 만드는 /myuser/downloads/new/디렉토리 대신에 폴더를 만들 /myuser/명령으로, 디렉토리 mkdir ../new다음에있는 모든 파일을 이동 downloadsnew, 그리고 마지막으로 이동 newdownloads. /myuser/downloads/경로 에있는 동안 다음 명령을 사용하여 한 줄로 수행 할 수 있습니다 .

mkdir ../new && mv * ../new && mv ../new ../downloads

이후이 경우, 파일 / 폴더의 “필터링”모든 종류의에 대해 걱정할 필요가 없습니다 new와 같은 경로의 동일한 수준에있다 downloads, 그래서 당신은 모든 것을 이동할 수 downloadsnew, 다음 이동 newdownloads`에.

그러나, 당신은 이미 하위 폴더가있는 경우 new생성을하고, 또 다른 하나를 만드는 데 걱정하지 싶지 않아 – 단지 변경 mkdir최초의 왼쪽에 명령을 &&에 위에 표시된 명령에 mv밀어 명령 new에서 통로; 당신이 여전히있는 동안 즉 /myuser/downloads/, 당신은 변경할 수 있습니다 mkdir ../newmv new ... 그런 다음 new[경로에있는 /myuser/downloads/new/] 하위 폴더 /myuser/new/가와 동일한 수준으로 위로 올라간 /myuser/downloads/다음 위에 표시된대로 나머지 명령을 실행할 수 있습니다. 모두 함께, 우리는 경로에서 시작했습니다 /myuser/downloads/.

mv new .. && mv * ../new && mv ../new ../downloads

“다운로드 폴더에있는 모든 파일과 폴더 / 하위 폴더를 하위 폴더 [ new] 로 옮기고 싶었 으니 끝났습니다! 이동할 싶었다 경우 에만 파일 (또는 단지 [더 세분화 된 오브젝트의 움직임을 삽입] 폴더 또는), 당신은 다른 명령을 사용해야하는 것 그 같은 수있는 “필터”객체 grep. 그러나 위에 작성된 명령은 사용자의 목적에 충분합니다.


답변