Câu hỏi Làm cách nào để di chuyển tất cả các tệp từ một thư mục này sang thư mục khác bằng dòng lệnh?


Tôi muốn biết làm thế nào tôi có thể di chuyển tất cả các tập tin từ một thư mục vào một thư mục khác với một dòng lệnh.

Giả sử tôi đang ở trong thư mục Tải xuống của tôi và có 100 tệp mà tôi muốn chuyển đến thư mục Video của mình mà không phải viết tất cả tên tệp.


167
2017-08-06 15:14


gốc


Bạn đang hỏi về việc di chuyển files nhưng mọi người chỉ cho bạn cách di chuyển không chỉ files nhưng folderscũng. Ổn chứ? - Askar


Các câu trả lời:


Mở một thiết bị đầu cuối và thực hiện lệnh này:

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

Nó sẽ di chuyển tất cả các tập tin và thư mục từ thư mục Downloads vào thư mục Videos.


Để di chuyển tất cả các tệp, chứ không phải thư mục: 

Nếu bạn quan tâm đến việc di chuyển tất cả các tệp (chứ không phải thư mục) từ thư mục Tải xuống vào thư mục Video, hãy sử dụng lệnh này

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

Để di chuyển chỉ các tệp từ thư mục Tải xuống, nhưng không phải từ các thư mục con:

Nếu bạn muốn di chuyển tất cả các tệp từ thư mục Tải xuống, nhưng không phải bất kỳ tệp nào trong các thư mục trong thư mục Tải xuống, hãy sử dụng lệnh sau:

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

đây, -maxdepth tùy chọn chỉ định mức độ tìm kiếm sâu nên thử, 1 có nghĩa là, chỉ có thư mục được chỉ định trong lệnh find. Bạn có thể thử sử dụng 2, 3 cũng để kiểm tra.

Xem Ubuntu tìm manpage để có giải thích chi tiết


235
2017-08-06 15:18



bạn có thể sử dụng mv một mình để di chuyển toàn bộ thư mục sang thư mục khác: thư mục mv ~ / Documents - JohnMerlino
FYI Tôi tin rằng lệnh đầu tiên của bạn ("mv -v ~ / Downloads / * ~ / Videos /") sẽ không di chuyển các tệp chấm. - Mark Doliner
Có, nó sẽ không di chuyển .files - Anwar
Nb. của bạn -print0 | xargs -0 mv -t ~/Videos có thể được thực hiện hiệu quả hơn với -exec mv -t ~/Videos \{\} \+ :-) - artfulrobot
vâng, đó là sự thật. Tôi là người mới khi tôi trả lời câu hỏi - Anwar


mv ~/Downloads/* ~/Videos

Nó sẽ di chuyển tất cả các tệp bao gồm các thư mục con trong thư mục mà bạn muốn mv. Nếu bạn muốn cp (bản sao) hoặc rm (loại bỏ) bạn sẽ cần -r (đệ quy) tùy chọn để bao gồm các thư mục con.


17
2017-12-08 03:24



Lệnh mv của tôi không có tùy chọn -R (Ubuntu 14.04). - Mark Doliner
@MarkDoliner, vâng, mv không cần tùy chọn đệ quy để bao gồm các thư mục con. Người ta cũng có thể sử dụng nó để đổi tên. - AliNâ
Tôi không cần *. Điều tương tự cũng xảy ra mà không sử dụng ngôi sao. - MycrofD
~ / Trong tiền tố của tên thư mục không phải lúc nào cũng hoạt động (không hoạt động trên bash và git atleast) - Krish Munot
Giải pháp này sẽ đưa ra một lỗi nếu thư mục nguồn trống. - Pierre Thibault


Có thể bằng cách sử dụng rsync, ví dụ:

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

Ở đâu:

-v, --verbose: Tăng độ dài.

-a, --archive: Chế độ lưu trữ; bằng -rlptgoD (Không -H, -A, -X).

-u, --update: Bỏ qua các tệp mới hơn trên máy thu.

--remove-source-files        Điều này cho rsync loại bỏ từ phía gửi các tập tin (nghĩa là các thư mục không) là một phần của quá trình truyền và đã được sao chép thành công ở phía bên nhận.

Nếu bạn có quyền root, tiền tố có sudo để ghi đè các vấn đề về quyền tiềm năng.


5
2018-06-06 15:08



CẢNH BÁO! tùy chọn --delete-after như đã lưu ý không hoạt động theo cách bạn mong đợi. Nó không xóa nguồn các tập tin sau khi sao chép thành công ... IT XÓA TẤT CẢ CÁC LOẠI LẠI / CÁC LỌC KHÁC TRONG ĐIỂM. (như @kenorb đã lưu ý ... nhưng tôi đã không đọc đủ cẩn thận! DOH) - Jay Marm


Sử dụng

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

Tôi hi vọng cái này giúp được. Bởi vì tôi đã có cùng một nỗi đau và lãng phí rất nhiều thời gian sửa chữa sai lầm của tôi.


2
2018-01-25 23:06





Đối với trường hợp đơn giản:

mv ~/Downloads/* ~/Videos

Nếu bạn cũng muốn di chuyển các tệp chấm, hãy đặt dotglob tùy chọn trình bao.

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

Điều này rời khỏi bộ tùy chọn trình bao.

Để sử dụng một lần dotglob, hãy chạy các lệnh trong một subshell:

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

2
2018-01-22 10:16





  1. Đi đến dòng lệnh và vào thư mục bạn muốn di chuyển đến cd folderNamehere
  2. Kiểu pwd. Thao tác này sẽ in thư mục bạn muốn di chuyển.
  3. Sau đó chuyển sang thư mục chứa tất cả các tệp cd folderNamehere
  4. Bây giờ để di chuyển tất cả các loại tệp mv *.* typeAnswerFromStep2here

Điều đó sẽ di chuyển tất cả các tệp từ thư mục đó sang thư mục khác.


1
2017-09-12 12:07



Điều này sẽ không khớp với các tệp mà không có bất kỳ phần mở rộng nào. ví dụ: nếu một thư mục có các tệp: foo.txt, bar. và bar cả hai bar. và bar sẽ không được di chuyển. Sử dụng * thay vì *.* chăm sóc điều đó. Nhưng trong cả hai trường hợp, các tệp ẩn như: .foobar sẽ không được di chuyển. - Dan


Để di chuyển thư mục có hoặc không có nội dung sang tên mới giống như cách bạn sử dụng mv lệnh đổi tên tệp:

mv -T dir1 dir2

Ở đâu:

  • -T xử lý đích như một tệp thông thường
  • dir1 là tên gốc của thư mục
  • dir2 là tên mới của thư mục

NB: dir2 không phải tồn tại.

Tôi hy vọng điều này tiết kiệm cho một người rất nhiều thời gian, như một noob, trước đó, tôi sẽ tạo một thư mục với tên mới và sau đó di chuyển nội dung của thư mục vào thư mục đã tạo trước đó.

Sử dụng cho thư mục con

Lệnh này hữu ích khi nhiều tệp đã được lưu trong thư mục con của thư mục đích, tức là Downloads/mp4. Trong ví dụ này, chạy mv -T Downloads/mp4 Videos sẽ cho kết quả mp4 thư mục con đang được đã xóa và tất cả các tệp chứa bên trong đều được chuyển vào thư mục Video.


0
2017-12-09 07:33



1 bởi vì thử nghiệm làm việc trong Xubuntu 14.04. Tôi đã thêm một ví dụ trong câu trả lời này để cho thấy rằng lệnh này sẽ gây ra dir1 bị gỡ bỏ. Ngoài đề phòng này, câu trả lời này đã ghi nhận điều gì đó tốt cho việc sử dụng hàng ngày. - clearkimura
"Để di chuyển thư mục có hoặc không có nội dung sang tên mới" Làm cách nào bạn có thể di chuyển thư mục ... sang tên? Điều đó không có ý nghĩa gì cả. "-T xử lý đích đến dưới dạng tệp bình thường" Làm thế nào đích đến có thể là một tệp? Bạn có nghĩa là thư mục? - Monica Heddneck
Nó giống như đổi tên một tập tin sang tên mới của nó như bạn sẽ làm với một cái gì đó như mv fileA fileB nhưng -T trong trường hợp này xử lý đích / thư mục dưới dạng tệp và đổi tên nó. - Feyisayo Sonubi


thử nó

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

-kiểu với đối số-type bạn có thể chỉ định kiểu file.on câu lệnh này là tệp tin trung bình.if sử dụng -d có nghĩa là thư mục.

-iname: phương pháp phổ biến nhất và rõ ràng để tìm kiếm một tệp đang sử dụng đối số -name của nó.if bạn không chắc chắn về trường hợp nhạy cảm của nó, bạn có thể sử dụng đối số -iname

mv {} và cuối cùng là chỉ định thư mục đích và sau đó di chuyển các tệp trên đó bằng cách sử dụng đối số mv {}


0
2018-04-01 16:54