Liên hệProfile
Danh mục

Mục Lục

    Lệnh xargs trong Linux là gì? Tìm hiểu 12 ví dụ ứng dụng thực tế

    Nguyễn Hưng

    Ngày đăng:

    14/01/2026

    Cập nhật lần cuối:

    14/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    14/01/2026

    Cập nhật lần cuối:

    14/01/2026

    Mục lục

    Lệnh xargs trong Linux là một tiện ích dòng lệnh dùng để xây dựng và thực thi các lệnh với danh sách đối số lấy từ đầu vào chuẩn (stdin) hoặc từ file, rồi chuyển đổi chúng thành tham số cho một lệnh khác. Trong bài viết này, mình sẽ giới thiệu cơ chế hoạt động cốt lõi và các ứng dụng thực tế của xargs trong quản trị hệ thống.

    Những điểm chính

    • Định nghĩa lệnh xargs: Hiểu rõ khái niệm, cú pháp và cách xargs chuyển đổi đầu vào thành đối số để xử lý các tác vụ hàng loạt.
    • Các tùy chọn cơ bản: Nắm được các tùy chọn quan trọng nhất, giúp bạn nhanh chóng điều khiển xargs để giới hạn đối số, chạy song song hay đọc dữ liệu từ tệp.
    • Các ứng dụng cụ thể: Hiểu chi tiết 12 ví dụ thực tế về lệnh xargs, từ nén, xóa, sao chép, đến đổi tên file hàng loạt, giúp bạn áp dụng xargs để giải quyết vấn đề hàng ngày.
    • Lưu ý khi sử dụng: Nắm vững các lưu ý quan trọng để sử dụng xargs an toàn và hiệu quả, đặc biệt là cách xử lý tên file có khoảng trắng và ký tự đặc biệt.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các câu hỏi thực tế về việc kết hợp xargs với các lệnh khác như grep, cp và ứng dụng trong kịch bản tự động hóa.

    Lệnh xargs trong Linux là gì?

    Lệnh xargs trong Linux/Unix là công cụ dùng để chuyển đổi đầu vào chuẩn thành các đối số truyền cho một câu lệnh khác, đặc biệt hữu ích khi lệnh đó chỉ nhận đối số chứ không đọc dữ liệu trực tiếp từ đầu vào.

    Lệnh xargs là công cụ dùng để chuyển đổi đầu vào chuẩn thành các đối số truyền cho một câu lệnh khác
    Lệnh xargs là công cụ dùng để chuyển đổi đầu vào chuẩn thành các đối số truyền cho một câu lệnh khác

    Khi bạn có danh sách các mục cần xử lý, nhưng bị giới hạn về số lượng hoặc độ dài đối số trong một câu lệnh, xargs sẽ tự động chia nhỏ danh sách đó thành nhiều phần phù hợp để tránh lỗi. Ngoài ra, xargs còn cho phép thực thi các lệnh song song, giúp tăng tốc xử lý khi làm việc với tập dữ liệu lớn.

    Một ví dụ phổ biến là kết hợp xargs với lệnh find, xargs nhận danh sách file được tìm và chạy xử lý tập tin theo nhóm thay vì từng file một, giúp tiết kiệm thời gian và tối ưu hiệu suất.

    Cú pháp của lệnh xargs:

    $ xargs [OPTION]... [COMMAND [INITIAL-ARGS]...]

    Trong đó:

    • [OPTION]…: Các tùy chọn bổ sung cho xargs, ví dụ như -n, -P, -0, -I {}, -a, -t, -p... giúp kiểm soát cách lấy đầu vào, số lượng đối số mỗi lần thực thi, chạy song song hay thay thế mẫu.
    • [COMMAND]: Tên lệnh thực sự sẽ được xargs triển khai, ví dụ rm, cp, mv, wc, echo,... Nếu không chỉ rõ thì xargs mặc định dùng lệnh echo.
    • [INITIAL-ARGS]…: Các tham số bổ sung ban đầu cho lệnh phía sau xargs (ví dụ: tên file, đối số mẫu, đường dẫn).

    Các tùy chọn cơ bản của lệnh xargs

    Tùy chọnMô tả ngắn gọn
    -nGiới hạn số lượng đối số cho mỗi lần chạy lệnh.
    -PChạy nhiều tiến trình song song.
    -0Xử lý đầu vào kết thúc bằng ký tự null.
    -I {}Thay thế một chuỗi mẫu bằng đối số đầu vào.
    -aĐọc các đối số từ một file.
    -tIn lệnh ra màn hình trước khi thực thi.
    -pHỏi xác nhận người dùng trước mỗi lần chạy.

    1. Nén ảnh .png thành file tar

    Lệnh xargs giúp nén nhiều file định dạng .png với tên có khoảng trắng/thư mục phức tạp mà không bị lỗi, giúp tự động hóa và độ chính xác khi thao tác trên hệ thống Linux. Lệnh thực hiện như sau:

    $ find Pictures  -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

    Trong trường hợp này, lệnh find tìm tất cả file có đuôi .png trong thư mục “Pictures” và các thư mục con, sau đó xuất tên file ra với ký tự phân tách là null (-print0). Thông qua pipe, xargs nhận đầu vào với tùy chọn -0 để đảm bảo xử lý chính xác các tên file có chứa khoảng trắng hoặc ký tự đặc biệt. Kết quả là toàn bộ danh sách file png sẽ được nén lại thành file images.tar.gz bằng lệnh tar.

    Cấu trúc thư mục trước khi nén
    Cấu trúc thư mục trước khi nén

    2. Chuyển output nhiều dòng thành một dòng

    Trong câu lệnh bên dưới, lệnh ls -1 Pictures liệt kê từng file mỗi dòng riêng lẻ. Khi kết hợp với xargs, các dòng đầu ra sẽ được gom lại thành một dòng duy nhất, tách nhau bằng dấu cách (space).

    $ ls -1 Pictures  | xargs

    Bạn nhận được một dòng duy nhất liệt kê toàn bộ tên file, kết quả này phù hợp cho các thao tác tiếp theo như sao chép hoặc xóa hàng loạt:

    đầu ra ls nhiều dòng trước và sau khi dùng xargs
    Đầu ra ls nhiều dòng trước và sau khi dùng xargs

    3. Liệt kê user trên hệ thống

    Thao tác này giúp bạn nhanh chóng liệt kê đầy đủ tên user hệ thống ở dạng chuỗi ngắn gọn, dễ đọc và thuận tiện cho các thao tác kiểm tra, xuất dữ liệu, phân tích bảo mật hoặc quản trị. Lệnh thực thi như sau:

    $ cut -d: -f1 < /etc/passwd | sort | xargs

    Kết quả danh sách tên user được sắp xếp lại với sort:

    Danh sách tên user được sắp xếp lại với sort
    Danh sách tên user được sắp xếp lại với sort

    4. Đếm dòng, từ và ký tự của các file

    Bạn triển khai cú pháp câu lệnh như sau:

    $ ls *upload* | xargs wc

    Lệnh ls *upload* liệt kê tất cả các file trong thư mục hiện tại có tên chứa “upload”. Khi kết hợp với xargs, toàn bộ danh sách file này được truyền lần lượt vào lệnh wc (word count) để đếm số dòng, từ và ký tự trong từng file, đồng thời tổng hợp kết quả ở cuối lệnh.

    Kết quả đầu ra là bảng thống kê số dòng, từ, ký tự của từng file “upload” và tổng số tất cả file đó:

    Bảng thống kê số dòng, từ, ký tự
    Bảng thống kê số dòng, từ, ký tự

    5. Xóa thư mục có tên cụ thể

    Để xóa thư mục có tên cụ thể, bạn thực thi lệnh sau:

    $ find Downloads -name "vietnix" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"

    Lệnh find Downloads -name “vietnix” -type d -print0 sẽ tìm tất cả thư mục có tên “vietnix” trong thư mục Downloads, xuất tên thư mục với ký tự phân tách là null (-print0). Khi dùng xargs -0, các tên thư mục chứa ký tự đặc biệt hoặc khoảng trắng sẽ được truyền chính xác cho lệnh xóa. Đồng thời, /bin/rm -v -rf "{}" sẽ xóa toàn bộ thư mục tìm được một cách đệ quy, có hiển thị chi tiết từng mục bị xóa.

    Kết quả hiển thị như sau:

    Kết quả sau khi thực hiện xóa thư mục có tên cụ thể
    Kết quả sau khi thực hiện xóa thư mục có tên cụ thể

    6. Xóa tất cả file có tên cụ thể

    Cú pháp lệnh được thực hiện như sau:

    $ find . -name "viet_nix" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"

    Lệnh find . -name “viet_nix” -type f -print0 sẽ tìm tất cả file có tên chính xác là “viet_nix” trong thư mục hiện tại và các thư mục con, xuất tên file với ký tự phân tách là null để tránh lỗi tên file chứa khoảng trắng/ký tự đặc biệt. Khi kết hợp với xargs -0, toàn bộ danh sách file này được truyền an toàn vào lệnh xóa /bin/rm -v -rf "{}".

    Kết quả là toàn bộ file có tên “viet_nix” ở mọi vị trí sẽ được xóa hoàn toàn, kèm thông tin xác nhận từng file bị xóa:

    Các file có tên “viet_nix” ở mọi vị trí sẽ được xóa hoàn toàn
    Các file có tên “viet_nix” ở mọi vị trí sẽ được xóa hoàn toàn

    7. Sao chép một file vào nhiều thư mục cùng lúc

    Cú pháp câu lệnh như sau:

    $ echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx

    File nguồn được copy tự động vào nhiều thư mục chỉ bằng một câu lệnh duy nhất, tiết kiệm thời gian thao tác lặp lại.

    Cây thư mục đích sau khi sao chép
    Cây thư mục đích sau khi sao chép

    8. Đổi tên toàn bộ file/thư mục thành chữ thường

    Lệnh sau dùng để chuyển tất cả tên file và thư mục trong cây “Documents” sang chữ thường:

    $ find Documents -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/\/\L$2/' {} \;

    Quá trình đổi tên sẽ được in chi tiết lên màn hình, liệt kê các file/thư mục nào vừa được chuyển về tên dạng chữ thường.

    Kết quả liệt kê các file/thư mục vừa được chuyển về tên dạng chữ thường
    Kết quả liệt kê các file/thư mục nào vừa được chuyển về tên dạng chữ thường

    9. Xóa tất cả file trong thư mục trừ 1 file cụ thể

    Lệnh sau sẽ giúp bạn tìm và xóa toàn bộ file trong thư mục hiện tại và thư mục con, trừ các file có đuôi .gz (file nén), phù hợp khi muốn dọn dẹp, giữ lại duy nhất các file nén.

    $ find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

    Trên màn hình sẽ hiện thông tin xác nhận từng file vừa bị xóa (nhờ tùy chọn -v của rm), giúp bạn dễ kiểm soát thao tác xóa hàng loạt mà không bỏ sót file .gz.

    Màn hình sẽ hiện thông tin xác nhận từng file vừa bị xóa
    Màn hình sẽ hiện thông tin xác nhận từng file vừa bị xóa

    10. Đọc dữ liệu từ file làm đối số

    Bạn thực hiện cú pháp lệnh như sau:

    $ xargs -a rss_links.txt
    Đọc dữ liệu từ file làm đối số
    Đọc dữ liệu từ file làm đối số

    Nếu bạn dùng xargs -a file mà không chỉ định lệnh thì mặc định là echo 

    11. In lệnh ra trước khi thực thi

    Lệnh sau dùng để đọc toàn bộ nội dung file rss_links.txt và chuyển các dòng trong file thành đối số cho lệnh phía sau xargs. Nếu không chỉ định lệnh cụ thể, xargs mặc định sử dụng lệnh echo. Cú pháp lệnh như sau:

    $ find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"

    Nội dung file được in ra trên một dòng hoặc làm tham số cho lệnh bạn chỉ định sau xargs, ví dụ dùng để tải, kiểm tra hàng loạt link, xử lý file hàng loạt,…

    Kết quả khi thực hiện in lệnh ra trước khi thực thi
    Kết quả khi thực hiện in lệnh ra trước khi thực thi

    12. Xác nhận trước khi sao chép file vào nhiều thư mục

    Cú pháp lệnh như sau:

    $ echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx

    Trước khi thực hiện mỗi thao tác sao chép file vào một thư mục, hệ thống sẽ hỏi bạn xác nhận (“y/n”). Nếu bạn đồng ý, lệnh cp sẽ được thực thi và hiển thị chi tiết kết quả. Nhờ đó tránh thao tác nhầm hoặc ảnh hưởng dữ liệu không mong muốn.

    Xác nhận trước khi sao chép file vào nhiều thư mục
    Xác nhận trước khi sao chép file vào nhiều thư mục

    Lưu ý khi sử dụng lệnh xargs

    Khi sử dụng lệnh xargs trong Linux cần lưu ý các điểm sau để đảm bảo an toàn và chính xác:

    • Xử lý tên có khoảng trắng/ký tự đặc biệt: Bạn nên sử dụng -0 (null delimiter) kết hợp với find … -print0 để tránh lỗi tách tên file, đặc biệt khi các file hoặc thư mục chứa khoảng trắng hoặc ký tự đặc biệt.
    • Kiểm tra độ dài dòng lệnh: Một số hệ thống giới hạn số lượng hoặc chiều dài đối số truyền vào, xargs sẽ tự động chia nhỏ thành các nhóm phù hợp. Có thể chủ động sử dụng tùy chọn -n để kiểm soát số lượng đối số mỗi lần thực hiện.
    • Thay thế mẫu: Nếu cần thay đổi phần tử đầu vào trong lệnh, bạn dùng -I {} giúp thay thế linh hoạt từng đối số vào vị trí tương ứng trong lệnh.
    • Chạy song song: Bạn có thể tận dụng tùy chọn -P giúp chạy nhiều tiến trình với xargs, nhưng nên cân nhắc nếu thao tác với dữ liệu lớn hoặc tài nguyên hệ thống giới hạn.
    • Không chỉ định lệnh sau xargs: Nếu không chỉ rõ [COMMAND], xargs sẽ mặc định thực hiện echo, vì vậy bạn cần chú ý để tránh nhầm lẫn khi truyền dữ liệu lớn.
    • Kiểm tra kết quả lệnh: Bạn nên xác minh lại đầu ra, nhất là khi thực hiện các thao tác trên nhiều file/thư mục hàng loạt và có sử dụng pipe từ các lệnh khác.
    Lưu ý khi sử dụng lệnh xargs
    Lưu ý khi sử dụng lệnh xargs

    Câu hỏi thường gặp

    Có dùng xargs kết hợp với grep được không?

    Có, bạn có thể chạy lệnh:
    find . -type f | xargs grep "search_pattern"
    Lệnh này tìm kiếm nội dung “search_pattern” trên tất cả các file trong thư mục hiện tại.

    Làm thế nào để dùng xargs copy nhiều file cùng lúc?

    Bạn có thể dùng lệnh sau:
    echo ./Templates/ ./Documents/ | xargs -n 1 cp ./Downloads/file.xlsx
    Lệnh này sẽ copy file tải về lần lượt vào nhiều thư mục chỉ với một dòng lệnh.

    Có thể sử dụng xargs với nhiều loại lệnh khác nhau không?

    Có thể, xargs dùng được với các lệnh cp, mv, rm, echo, wc,… miễn là lệnh đó nhận đối số trực tiếp.

    Xargs có thích hợp dùng trong Bash Script không?

    Có, vì xargs giúp tối ưu hóa các thao tác xử lý danh sách file/dữ liệu đầu vào, xây dựng quy trình tự động hóa linh hoạt và hạn chế lỗi do độ dài dòng lệnh.

    Lệnh xargs giúp nâng cao tốc độ xử lý và giảm thiểu sai sót khi thao tác với các tên file phức tạp và tối đa hóa khả năng kết hợp với nhiều lệnh khác như cp, mv, rm, grep, tar,… Để sử dụng xargs an toàn và đúng mục đích, bạn cần chú ý đến việc xử lý đầu vào, kiểm soát số lượng đối số, xác nhận thao tác nhạy cảm, và quản lý hiệu quả tài nguyên hệ thống khi chạy song song. Mời bạn tham khảo thêm các lệnh Linux hữu ích khác trong các bài viết dưới đây của mình:

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách sử dụng fping để kiểm tra trạng thái của nhiều host cùng lúc
    Cách sử dụng fping để kiểm tra trạng thái của nhiều host cùng lúc

    fping là phiên bản mở rộng của lệnh ping, được dùng để kiểm tra trạng thái của nhiều địa chỉ IP hoặc domain cùng lúc nhanh chóng. Trong bài viết này, mình sẽ cung cấp một hướng dẫn toàn diện về fping, từ việc định nghĩa, cài đặt, cho đến cách khai thác các tính…

    05/02/2026

    Hướng dẫn sử dụng lệnh uptime Linux để kiểm tra thời gian hoạt động của hệ thống
    Hướng dẫn sử dụng lệnh uptime Linux để kiểm tra thời gian hoạt động của hệ thống

    Lệnh uptime Linux là một công cụ dòng lệnh giúp kiểm tra nhanh chóng thời gian hoạt động của máy chủ kể từ lần khởi động gần nhất, thường được sử dụng trong các công việc giám sát, quản lý và đánh giá hiệu suất hoạt động của máy chủ Linux. Trong bài viết này,…

    05/02/2026

    Cách sử dụng lệnh stat Linux chi tiết và đơn giản
    Cách sử dụng lệnh stat Linux chi tiết và đơn giản

    Lệnh stat trong Linux là một tiện ích dòng lệnh dùng để hiển thị thông tin chi tiết về một file hoặc thư mục, cung cấp các thuộc tính như kích thước file, quyền truy cập, quyền sở hữu, các dấu thời gian liên quan đến lần truy cập, chỉnh sửa và thay đổi metadata…

    05/02/2026

    Hướng dẫn sử dụng lệnh rmdir để xóa thư mục trong Linux chi tiết
    Hướng dẫn sử dụng lệnh rmdir để xóa thư mục trong Linux chi tiết

    Lệnh rmdir là một công cụ dòng lệnh cơ bản trong hệ điều hành Linux, được thiết kế chuyên biệt để giúp bạn gỡ bỏ các thư mục trống khỏi hệ thống một cách an toàn. rmdir sẽ kiểm tra và chỉ thực hiện lệnh xóa khi thư mục thực sự không chứa tệp tin…

    05/02/2026

    linux

    lenh

    text