명령 줄을 사용하여 한 폴더에서 다른 폴더로 모든 파일을 어떻게 이동합니까?


245

명령 줄을 사용하여 모든 파일을 폴더에서 다른 폴더로 어떻게 이동할 수 있는지 알고 싶습니다.

다운로드 폴더에 있고 모든 파일 이름을 쓰지 않고 비디오 폴더로 옮기고 싶은 100 개의 파일이 있다고 가정 해 봅시다.


당신은 이동에 대해 요구하고 files있지만, 사람들이 얼마나뿐만 아니라 이동하는 방법을 보여 files하지만, folders뿐만 아니라. 그 확인은?
Askar

2
@ Hontvári Levente는 1 년 전에 가장 훌륭하고 깨끗하고 단순하며 답이있는 답변을주었습니다. 그렇다면 현재 득표 수는 262 명에 비해 3 표 밖에 얻지 못했습니까?
레이 버터 워스

답변:


331

터미널을 열고 다음 명령을 실행하십시오.

mv  -v ~/Downloads/* ~/Videos/

모든 파일과 폴더가 다운로드 폴더에서 비디오 폴더로 이동합니다.


폴더가 아닌 모든 파일을 이동하려면 :

폴더가 아닌 모든 파일을 다운로드 폴더에서 비디오 폴더로 이동하려면이 명령을 사용하십시오.

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

하위 폴더가 아닌 다운로드 폴더에서만 파일을 이동하려면

Downloads 폴더의 모든 파일을 이동하지만 Download 폴더의 폴더에있는 파일은 이동하지 않으려면 다음 명령을 사용하십시오.

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

여기서 -maxdepth옵션은 찾기가 얼마나 깊이 시도해야 하는지를 지정합니다. 1즉, find 명령에 지정된 디렉토리 만 의미합니다. 다음을 사용하여 시도 할 수 있습니다 2, 3테스트도.

자세한 설명 은 Ubuntu find 맨 페이지 를 참조하십시오


3
mv 만 사용하여 전체 디렉토리를 다른 폴더로 이동할 수 있습니다. mv folder ~ / Documents
JohnMerlino

20
참고로 첫 번째 명령 ( "mv -v ~ / Downloads / * ~ / Videos /")이 도트 파일을 이동하지 않는다고 생각합니다.
Mark Doliner

1
예, .files를 이동하지 않습니다
Anwar

3
Nb. 당신은 -print0 | xargs -0 mv -t ~/Videos보다 효율적으로 수행 할 수 있습니다 -exec mv -t ~/Videos \{\} \+:-)
artfulrobot

3
mv -v ~/Downloads/* ~/Videos/은 숨겨진 파일에 대해 작동하지 않습니다
FreeLightman

28
mv ~/Downloads/* ~/Videos

원하는 디렉토리에 하위 폴더를 포함한 모든 파일이 이동합니다 mv. cp(복사) 또는 rm(제거) 하려는 경우 -r하위 폴더를 포함 하려면 (재귀) 옵션 이 필요합니다 .


2
내 mv 명령에는 -R 옵션이 없습니다 (Ubuntu 14.04).
Mark Doliner

1
예, @MarkDoliner mv는 하위 폴더를 포함하기 위해 재귀 옵션이 필요하지 않습니다. 이름 바꾸기에도 사용할 수 있습니다.
Alen

나는 * 필요하지 않았다. 별을 사용하지 않고 같은 일이 일어났습니다.
MycrofD

폴더 이름의 접두사에서 ~ /가 항상 작동하지는 않습니다 (bash 및 git atleast에서는 작동하지 않음)
Krish Munot

소스 디렉토리가 비어 있으면이 솔루션에서 오류가 발생합니다.
Pierre Thibault

11

간단한 경우 :

mv ~/Downloads/* ~/Videos

점 (숨겨진) 파일도 이동하려면 dotglob shell 옵션 을 설정하십시오 .

shopt -s dotglob
mv ~/Downloads/* ~/Videos

쉘 옵션 세트가 남습니다.

한 번의 dotglob 사용을 위해 서브 쉘에서 명령을 실행하십시오.

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

나 자신을위한 메모 : 마지막 옵션 은 내용 (숨겨진 파일 포함) (shopt -s dotglob; mv ~/Downloads/* ~/Videos) 이동 (잘라 내기)합니다. 이 경우 원본 및 대상 폴더가 모두 존재해야합니다. 마지막에 원점 디렉토리가 비게됩니다.
Pathros

이것은 정답이어야합니다
megar

11

rsync예를 들어을 사용하여 가능합니다 .

rsync -vau --remove-source-files src/ dst/

어디:

-v, --verbose: 상세도를 높입니다.

-a, --archive: 보관 모드; 동일 -rlptgoD(NO -H, -A, -X).

-u, --update: 수신기에서 최신 파일을 건너 뜁니다.

--remove-source-files 이것은 rsync전송 측에서 전송 의 일부이며 수신 측에서 성공적으로 복제 된 파일 (디렉토리를 의미하지 않음)을 송신 측에서 제거하도록 지시 합니다 .

루트 권한이 있다면 접두사로 sudo잠재적 권한 문제를 무시하십시오.


1
경고! 언급 된 --delete-after 옵션은 예상 한대로 작동하지 않습니다. 성공적으로 복사 한 후에 는 소스 파일을 삭제하지 않습니다 ... 대상의 나머지 / 다른 파일을 모두 삭제합니다 . (@kenorb가 지적했듯이 ... 나는 충분히 읽지 못했습니다! DOH)
Jay Marm

4

사용하다

mv -v ~/rootfolder/branch/* ~/rootfolder

이게 도움이 되길 바란다. 같은 고통을 겪고 실수를 고치는 데 많은 시간을 낭비했기 때문입니다.


2

mv명령을 사용하여 파일 이름을 바꾸는 것처럼 컨텐츠가 있거나없는 디렉토리를 새 이름으로 이동하려면 다음을 수행하십시오.

mv -T dir1 dir2

어디:

  • -T 대상을 일반 파일로 취급
  • dir1 디렉토리의 원래 이름입니다
  • dir2 디렉토리의 새로운 이름입니다

주의 : dir2존재하지 않아도됩니다.

나는 이것이 멍청한 사람으로 많은 시간을 절약하기를 희망합니다.이 전에, 나는 새로운 이름으로 디렉토리를 만든 다음 디렉토리의 내용을 이전에 작성된 디렉토리로 옮길 것입니다.

하위 디렉토리에 사용

이 명령은 많은 파일이 대상 디렉토리의 하위 폴더에 저장된 경우에 유용합니다 Downloads/mp4. 이 예제에서 실행 mv -T Downloads/mp4 Videos하면 mp4하위 폴더가 제거 되고 내부에 포함 된 모든 파일이 비디오 폴더로 이동됩니다.


1
Xubuntu 14.04에서 작동 테스트했기 때문에 +1. 이 답변에 예제를 추가 하여이 명령으로 인해 dir1제거 될 수 있음을 보여줍니다 . 이 예방 조치 외에도이 답변은 매일 사용하기에 좋은 것을 지적했습니다.
clearkimura

1
"내용이 있거나없는 디렉토리를 새 이름으로 이동하려면"디렉토리를 어떻게 이름으로 이동할 수 있습니까? 말이되지 않습니다. "-T는 대상을 일반 파일로 취급합니다"대상은 어떻게 파일이 될 수 있습니까? 디렉토리를 의미합니까?
Monica Heddneck

마치 파일을 새로운 이름으로 바꾸는 것과 비슷 mv fileA fileB하지만 -T이 경우 플래그는 대상 / 디렉토리를 파일로 취급하고 이름을 바꿉니다.
Feyisayo Sonubi

나를 위해 일했다 :)
Naveen Kumar V

1
  1. 명령 행으로 이동하여 이동하려는 디렉토리로 이동하십시오. cd folderNamehere
  2. 을 입력하십시오 pwd. 이동하려는 디렉토리도 인쇄됩니다.
  3. 그런 다음 모든 파일이있는 디렉토리로 변경하십시오. cd folderNamehere
  4. 이제 모든 파일 형식을 이동 mv *.* typeAnswerFromStep2here

그러면 모든 파일이 해당 디렉토리에서 다른 디렉토리로 이동합니다.


3
확장자가없는 파일과는 일치하지 않습니다. 예를 들어 폴더는 파일이있는 경우 : foo.txt, bar.그리고 bar모두 bar.bar이동되지 않습니다. *대신에 사용하여 *.*처리합니다. 그러나 두 경우 모두 :와 같은 숨겨진 파일은 .foobar이동되지 않습니다.
Dan

1
mv source_path/* destination_path/

여기 *에서 완전한 소스 디렉토리 대신 source_path 내부에 파일을 가져 오도록 슬래시와 소스 경로 뒤에 슬래시를 넣어야합니다 .

예: mv /home/username/test/* /home/username/test2/

위 명령은 소스 디렉토리의 모든 파일 (숨겨지지 않은 경우)을 대상 디렉토리로 이동합니다.


0

시도 해봐

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-type 인수와 함께 -type 디렉토리를 의미하는 -d를 사용하는 경우 평균 파일 인이 명령문에서 file.type을 지정할 수 있습니다.

-iname : 파일을 찾는 가장 일반적이고 명백한 방법은 -name 인수를 사용하는 것입니다. 대소 문자 구분이 확실하지 않은 경우 -iname 인수를 사용할 수 있습니다

mv {} 그리고 마지막으로 대상 디렉토리를 지정한 다음 mv {} 인수를 사용하여 파일을 이동시킵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.