Làm thế nào để sao chép một tập tin vào nhiều thư mục với một lệnh trong Linux

Làm thế nào để sao chép một tập tin vào nhiều thư mục với một lệnh trong Linux
Làm thế nào để sao chép một tập tin vào nhiều thư mục với một lệnh trong Linux

Video: Làm thế nào để sao chép một tập tin vào nhiều thư mục với một lệnh trong Linux

Video: Làm thế nào để sao chép một tập tin vào nhiều thư mục với một lệnh trong Linux
Video: DỌN RÁC máy tính kiểu này là DỞ RỒI chị ơi 🥲 - YouTube 2024, Tháng mười một
Anonim
Sao chép một tập tin với dòng lệnh Linux là dễ dàng. Tuy nhiên, nếu bạn muốn sao chép cùng một tệp vào một số vị trí khác nhau thì sao? Điều đó cũng dễ dàng và chúng tôi sẽ chỉ cho bạn cách thực hiện điều đó bằng một lệnh.
Sao chép một tập tin với dòng lệnh Linux là dễ dàng. Tuy nhiên, nếu bạn muốn sao chép cùng một tệp vào một số vị trí khác nhau thì sao? Điều đó cũng dễ dàng và chúng tôi sẽ chỉ cho bạn cách thực hiện điều đó bằng một lệnh.

Thông thường, để sao chép một tệp, bạn sẽ sử dụng

cp

lệnh, liên kết đến tệp nguồn và thư mục đích:

cp ~/Documents/FileToBeCopied.txt ~/TextFiles/

Để sao chép nó vào hai thư mục khác, nhiều người sẽ chỉ chạy lệnh hai lần nữa, với các đích khác nhau:

cp ~/Documents/FileToBeCopied.txt ~/Dropbox/

cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/

Tuy nhiên, chúng ta có thể thực hiện cùng một nhiệm vụ với một lệnh:
Tuy nhiên, chúng ta có thể thực hiện cùng một nhiệm vụ với một lệnh:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

Đây là cách lệnh này hoạt động. Các

echo

lệnh thường ghi vào màn hình. Tuy nhiên, trong trường hợp này, chúng tôi muốn cho đầu ra của

echo

lệnh làm đầu vào cho

xargs

chỉ huy. Để làm điều này, chúng tôi sử dụng biểu tượng đường ống (

|

) cung cấp đầu ra từ một lệnh làm đầu vào cho một lệnh khác. Các

xargs

lệnh sẽ chạy

cp

lệnh ba lần, mỗi lần chắp thêm đường dẫn thư mục tiếp theo vào đường dẫn từ

echo

lệnh vào cuối

cp

chỉ huy. Có ba đối số được chuyển đến

xargs

nhưng

-n 1

tùy chọn trên

xargs

lệnh yêu cầu nó chỉ thêm một trong các đối số đó vào một thời điểm

cp

lệnh mỗi khi nó chạy.

Vì vậy, để gắn bó với ví dụ của chúng tôi từ trước đó, ba

cp

lệnh trên có thể được kết hợp thành một lệnh như sau:

echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt

Lưu ý rằng nếu tệp được sao chép tồn tại trong bất kỳ thư mục đích nào được chỉ định, tệp trong đích đó sẽ được thay thế tự động. Bạn sẽ không được hỏi nếu bạn muốn thay thế tệp. (Thông thường, khi bạn sử dụng
Lưu ý rằng nếu tệp được sao chép tồn tại trong bất kỳ thư mục đích nào được chỉ định, tệp trong đích đó sẽ được thay thế tự động. Bạn sẽ không được hỏi nếu bạn muốn thay thế tệp. (Thông thường, khi bạn sử dụng

cp

lệnh để sao chép tệp vào một vị trí duy nhất, bạn có thể thêm

-i

tùy chọn hỏi xem bạn có muốn thay thế tệp hiện có không. Tuy nhiên,

-i

tùy chọn là một tùy chọn tương tác (nó gây ra

cp

lệnh để yêu cầu đầu vào từ người dùng) và bạn không thể sử dụng tùy chọn tương tác với

cp

lệnh khi sử dụng nó cùng với

xargs

.)

Một điều khác cần xem xét, đó là nếu bạn đang sao chép một tệp rất lớn, bạn có thể muốn thêm không dấu kiểm soát (

-n

) tùy chọn

cp

lệnh trong lệnh đơn ở trên. Tùy chọn này tự động ngăn tệp bị ghi đè ở đích nếu nó đã tồn tại ở đó. Nếu bạn sao chép một tệp rất lớn qua mạng, nó có thể chậm và bạn có thể muốn tránh sử dụng các tài nguyên cần thiết để sao chép và thay thế tệp. Lệnh sau thêm vào

-n

và sẽ không sao chép tệp vào bất kỳ đích nào được liệt kê trong các đối số cho câu lệnh echo, nếu tệp đã tồn tại ở đích đó.

echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt

Đề xuất: