Trang chủ » làm thế nào để » Cách sao chép tệp vào nhiều thư mục bằng một lệnh trong Linux

    Cách sao chép tệp vào nhiều thư mục bằng một lệnh trong Linux

    Sao chép một tập tin với dòng lệnh Linux rất 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ễ, và chúng tôi sẽ chỉ cho bạn cách làm đ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 nữa, nhiều người sẽ chạy lệnh thêm 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:

    tiếng vang dir1 dir2 dir3 | xargs -n 1 cp tập tin1

    Đây là cách lệnh này hoạt động. Các tiếng vang 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 cung cấp đầu ra của tiếng vang 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 ( | ) 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 nối thêm đường dẫn thư mục tiếp theo được dẫn từ nó tiếng vang lệnh vào cuối của cp chỉ huy. Có ba đối số được truyền cho xargs , nhưng -n 1 tùy chọn trên xargs lệnh bảo nó chỉ nối thêm một trong các đối số đó vào một lúc cp lệnh mỗi lần nó chạy.

    Vì vậy, để gắn bó với ví dụ của chúng tôi từ trước đó, ba người riêng biệt cp các lệnh trên có thể được kết hợp thành một lệnh như thế này:

    echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Tài liệu / 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 cp lệnh để sao chép một tập tin vào một vị trí, bạn có thể thêm -tôi tùy chọn để hỏi nếu bạn muốn thay thế một tập tin hiện có. Tuy nhiên, -tô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 kết hợp 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 phần không bị chặn ( -n ) tùy chọn cho cp lệnh trong lệnh đơn ở trên. Tùy chọn này tự động ngăn không cho tập tin bị ghi đè ở đích nếu nó đã tồn tại ở đó. Nếu bạn đang sao chép một tệp rất lớn qua mạng, nó có thể bị 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 -n tùy chọ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ố vào 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

    Nhập man echo, man xargs hoặc man cp trên dòng lệnh trong Linux để biết thêm thông tin về bất kỳ lệnh nào trong số này.