Lệnh split Linux được dùng để chia các file dung lượng lớn thành nhiều phần nhỏ hơn, giúp việc lưu trữ và xử lý dữ liệu trở nên nhẹ nhàng và linh hoạt. Bài viết này sẽ giới thiệu khái niệm, cú pháp cơ bản, các tùy chọn quan trọng và ví dụ thực tế để bạn áp dụng lệnh split hiệu quả trong công việc hằng ngày trên hệ thống Linux.
Những điểm chính
- Khái niệm và cú pháp cơ bản: Biết được lệnh split trong Linux là lệnh cho phép chia nhỏ các file lớn thành các phần nhỏ hơn, giúp dễ dàng lưu trữ, truyền tải hoặc phân tích mà không làm thay đổi file gốc.
- Các tùy chọn phổ biến: Làm chủ các tùy chọn quan trọng để chia file theo số dòng (
-l), kích thước (-b), sử dụng hậu tố số (-d) và tùy chỉnh tên file đầu ra. - Ví dụ và ứng dụng thực tế: Tham khảo các ví dụ minh họa chi tiết từ cách chia file thành N phần bằng nhau đến việc ngăn tạo file rỗng và sử dụng chế độ
--verbose. - Hiệu suất và các lựa chọn thay thế: Hiểu rõ các yếu tố ảnh hưởng đến tốc độ xử lý và biết đến các công cụ thay thế như csplit hay sed cho các nhu cầu phức tạp hơn.
- Giải đáp thắc mắc (FAQ): Nhận câu trả lời cho các vấn đề thường gặp như xử lý file nhị phân, cách ghép các file đã chia và giới hạn của lệnh.
Lệnh split trong Linux là gì?
Lệnh split trong Linux là một công cụ dòng lệnh dùng để chia một file lớn thành nhiều file nhỏ hơn, thường được ứng dụng trong các trường hợp cần xử lý dữ liệu quy mô lớn như quản lý file log hoặc file lưu trữ dung lượng lớn nhằm tối ưu hóa việc phân tích, truyền tải hoặc lưu trữ. Theo mặc định, split sẽ tách file nguồn thành các file con, mỗi file chứa 1000 dòng, nhưng người dùng có thể tùy chỉnh số dòng này theo nhu cầu của từng tác vụ cụ thể. Lệnh split hoạt động độc lập và không làm thay đổi nội dung file gốc.

Lệnh split trong linux có cú pháp cơ bản như sau:
split [tùy_chọn] tên_tệp_nguồn [tiền_tố_cho_tệp_mới]Quy ước đặt tên và tùy chỉnh của lệnh split
Các file được tạo ra bởi lệnh split sẽ được đặt tên theo một quy tắc rõ ràng, dễ theo dõi, có dạng PREFIXaa, PREFIXab, PREFIXac,… Trong đó, PREFIX là tiền tố do người dùng quy định (mặc định là x). Bạn có thể thay đổi tiền tố này cũng như kích thước hoặc số dòng của mỗi file con để phù hợp với mục đích sử dụng. Phần hậu tố phía sau sẽ tự động tăng dần theo thứ tự chữ cái hoặc số, giúp việc nhận biết, sắp xếp và quản lý các file sau khi chia trở nên đơn giản và trực quan hơn.
Những tùy chọn phổ biến của lệnh split
Dưới đây là các tùy chọn thường dùng với lệnh split giúp bạn linh hoạt chia nhỏ file theo kích thước, số dòng và kiểu hậu tố:
- -b : Dùng để chia file thành nhiều phần có kích thước cố định, phù hợp khi bạn quan tâm đến dung lượng từng file hơn là số dòng.
- -l : Dùng để chia file thành các phần, mỗi phần chứa một số lượng dòng cố định, rất hữu ích khi thao tác với file văn bản hoặc file log lớn.
- -d: Chuyển hậu tố mặc định từ dạng chữ cái sang dạng số, giúp việc sắp xếp và xử lý tự động trở nên thuận tiện hơn.
- -a: Thiết lập độ dài phần hậu tố được gắn vào tên file đầu ra.
- –verbose: Yêu cầu chương trình in thông báo chẩn đoán ra lỗi tiêu chuẩn trước khi mở mỗi file đầu ra mới.
- –additional-suffix: Thêm một chuỗi hậu tố bổ sung vào sau phần hậu tố tự động mà lệnh split sinh ra.
- –numeric-suffixes: Chuyển sang sử dụng hậu tố dạng số thay vì dạng chữ cái mặc định.
- –filter: Gửi từng khối dữ liệu sau khi chia qua một lệnh shell để xử lý tiếp, thay vì ghi trực tiếp ra file thường.

Các ứng dụng nâng cao với lệnh split trong Linux
- Chia nhỏ file theo thiết lập mặc định
- Chia file theo số dòng cụ thể
- Sử dụng lệnh split với chế độ Verbose
- Chia file theo kích thước Byte chính xác
- Tùy chỉnh độ dài hậu tố file đầu ra
- Tạo file chia với hậu tố định dạng số
- Chia file thành N phần cụ thể (Chunks)
- Tùy chỉnh tiền tố file đầu ra
- Ngăn chặn việc tạo file trống khi chia nhỏ
- Chia file thành hai phần có kích thước tương đương
Để giúp bạn dễ hình dung cách lệnh split hoạt động và khả năng tùy chỉnh linh hoạt của lệnh, các ví dụ trong bài viết sẽ thống nhất sử dụng một file mẫu có tên index.txt xuyên suốt nội dung.
Chia nhỏ file theo thiết lập mặc định
Khi sử dụng lệnh split mà không kèm theo bất kỳ tùy chọn nào, hệ thống sẽ áp dụng chế độ chia file mặc định. Theo cơ chế này, file index.txt được tách thành nhiều file nhỏ, mỗi file chứa 1000 dòng. Lệnh thực hiện như sau:
split index.txt
Sau khi chạy lệnh, nội dung của index.txt sẽ được chia thành các file nhỏ có tên lần lượt là xaa, xab, xac, …. Các file này (ngoại trừ file cuối cùng) đều có đủ 1000 dòng. Do không chỉ định tiền tố khi chạy lệnh, split sẽ sử dụng tiền tố mặc định là x, kết hợp với hậu tố chữ cái tăng dần để đặt tên cho các file con.
Chia file theo số dòng cụ thể
Nếu bạn muốn chủ động kiểm soát số dòng trong mỗi file sau khi tách, bạn hãy sử dụng tùy chọn -l (viết tắt của lines). Bạn có thể thực hiện câu lệnh sau:
split -l 4 index.txt split_file
Câu lệnh trên sẽ chia file index.txt thành nhiều file con, mỗi file chứa đúng 4 dòng dữ liệu với tên file được ghép tiền tố split_file, chẳng hạn như split_fileaa, split_fileab,…
Lưu ý
Giá trị 4 dòng chỉ mang tính minh họa để bạn dễ hình dung cách hoạt động. Bạn có thể thay bằng bất kỳ số dòng nào phù hợp với nhu cầu xử lý dữ liệu của mình.
Sử dụng lệnh split với chế độ Verbose
Tùy chọn --verbose cho phép hiển thị thông báo chi tiết ngay khi mỗi file con được tạo ra, giúp bạn theo dõi trực tiếp quá trình chia file. Đây là tùy chọn hữu ích khi cần kiểm soát hoặc kiểm tra tiến trình xử lý dữ liệu.
Lệnh thực hiện:
split index.txt -l 4 --verbose
Lệnh trên sẽ tách file index.txt thành nhiều tệp nhỏ, mỗi tệp gồm 4 dòng dữ liệu. Đồng thời, terminal sẽ hiển thị thông tin chi tiết theo thời gian thực về từng file được tạo, giúp bạn dễ dàng quan sát và kiểm soát quá trình xử lý.
Lưu ý
Tham số -l 4 chỉ mang tính minh họa, bạn có thể thay đổi linh hoạt theo nhu cầu sử dụng.
Chia file theo kích thước Byte chính xác
Để chia file theo kích thước tính bằng byte thay vì dựa trên số dòng, bạn có thể dùng tùy chọn -b (viết tắt của bytes).
split -b 16 index.txt index
Khi thực thi, file index.txt sẽ được chia thành nhiều file nhỏ như indexaa, indexab,… trong đó mỗi file chứa đúng 16 byte dữ liệu.
Tùy chỉnh độ dài hậu tố file đầu ra
Mặc định, hậu tố của các file sau khi chia có độ dài 2 ký tự (aa, ab…). Bạn có thể thay đổi độ dài này bằng tùy chọn -a (suffix-length) với lệnh:
split -l 4 -a 4 index.txt
Các file sau khi chia sẽ được gán hậu tố dài 4 ký tự, tạo ra những tên như xaaaa, xaaab và tiếp tục tăng dần theo thứ tự bảng chữ cái.
Lưu ý
Tham số -l 4 trong ví dụ chỉ nhằm mục đích minh họa cho cách hoạt động của lệnh và có thể thay đổi tùy nhu cầu thực tế.
Tạo file chia với hậu tố định dạng số
Theo mặc định, split sử dụng hậu tố chữ cái. Nếu bạn muốn dùng hậu tố dạng số, hãy thêm tùy chọn -d (numeric-suffixes).
split -l 4 -d index.txt
Chương trình sẽ chia file index.txt thành nhiều file nhỏ, mỗi file 4 dòng và tên file được gắn hậu tố số như x00, x01, x02 theo thứ tự tăng dần.
Lưu ý
Tham số -l 4 trong ví dụ chỉ nhằm giúp minh họa và bạn có thể thay đổi thành bất kỳ số dòng nào phù hợp với nhu cầu của mình.
Chia file thành N phần cụ thể (Chunks)
Để chia một file thành một số phần xác định trước, chẳng hạn muốn tách thành đúng ba file đầu ra, bạn có thể sử dụng tùy chọn -n (viết tắt của number of chunks) cùng với lệnh split. Tùy chọn này cho phép chỉ định số lượng phần cần tạo thay vì dựa trên số dòng hay kích thước cố định:
split -n 3 index.txt
Khi chạy lệnh, nội dung trong index.txt sẽ được phân tách thành đúng ba phần riêng biệt và chương trình sẽ cố gắng phân bổ dữ liệu sao cho dung lượng giữa các phần là tương đối đồng đều. Điều này rất hữu ích khi bạn chỉ quan tâm đến việc có N file đầu ra, bất kể mỗi file chứa bao nhiêu dòng hay bao nhiêu byte.
Tùy chỉnh tiền tố file đầu ra
Lệnh split cho phép bạn đặt tiền tố tùy chỉnh cho các file đầu ra thay vì phải dùng các tên mặc định. Nếu muốn các file sau khi chia đều bắt đầu bằng chuỗi “split_index_“, bạn chỉ cần chỉ định chuỗi này ở vị trí tiền tố trong câu lệnh:
split -l 4 index.txt split_index_
Với lệnh bên trên, nội dung file index.txt sẽ được chia thành các file nhỏ, mỗi file 4 dòng và tên file sẽ có dạng split_index_aa, split_index_ab cùng với hậu tố mặc định tăng dần theo bảng chữ cái.
Lưu ý
Tham số -l 4 chỉ mang tính minh họa và bạn có thể điều chỉnh số dòng cho phù hợp với nhu cầu xử lý dữ liệu của mình.
Ngăn chặn việc tạo file trống khi chia nhỏ

Trong trường hợp file gốc nhỏ nhưng bị chia thành quá nhiều phần, có thể phát sinh các file rỗng không chứa dữ liệu. Để tránh tình trạng này, bạn hãy dùng tùy chọn -e (elide empty files).
split -l 4 -e index.txtLệnh vẫn thực hiện chia file bình thường, nhưng sẽ không tạo các file trống, giúp thư mục kết quả gọn gàng và dễ quản lý hơn.
Chia file thành hai phần có kích thước tương đương
Để chia một file thành đúng hai phần có dung lượng hoặc số dòng gần tương đương nhau, bạn có thể sử dụng tùy chọn -n với giá trị 2 trong lệnh split. Cách này phù hợp khi mục tiêu chính là có hai file kết quả cân bằng thay vì tự mình tính toán số dòng hoặc kích thước cho mỗi phần:
split -n 2 index.txt
Với lệnh bên trên, nội dung của index.txt sẽ được tách thành hai file đầu ra, thường có tên lần lượt là xaa và xab, mỗi file chứa xấp xỉ một nửa tổng dữ liệu của file gốc. Điều này giúp việc xử lý và phân phối dữ liệu trở nên đơn giản hơn khi cần chia đôi một file lớn.
Hiệu suất khi chia file bằng lệnh split
Lệnh split khi áp dụng cho các file dung lượng lớn sẽ phải đọc toàn bộ dữ liệu từ đĩa rồi ghi lại thành nhiều file con nên tốc độ xử lý phụ thuộc mạnh vào hiệu năng I/O của hệ thống lưu trữ. Để tránh quá trình chia file diễn ra chậm và tạo ra quá nhiều file nhỏ không cần thiết, bạn nên bảo đảm đủ dung lượng đĩa và lựa chọn kích thước mỗi phần sao cho phù hợp với kích thước file nguồn cũng như nhu cầu sử dụng thực tế.

Các lựa chọn thay thế cho lệnh split
Khi cần chia nhỏ file lớn, ngoài lệnh split bạn vẫn có thể cân nhắc một số công cụ và cách tiếp cận khác để linh hoạt hơn trong từng tình huống xử lý dữ liệu cụ thể:
- csplit là tiện ích dòng lệnh cho phép chia file dựa trên ngữ cảnh, chẳng hạn như các mẫu biểu thức chính quy hoặc số thứ tự dòng, rất phù hợp khi bạn muốn cắt file theo các mốc nội dung xác định sẵn.
- sed hoạt động như một trình soạn thảo luồng, có thể dùng để trích xuất những khoảng dòng cụ thể rồi ghi chúng ra các file riêng, nhờ đó bạn dễ dàng tổ chức lại dữ liệu dựa trên phạm vi dòng mong muốn.
- Việc viết script bằng Python hoặc các ngôn ngữ lập trình khác cho phép bạn xây dựng logic chia file tùy biến theo đúng yêu cầu nghiệp vụ, đặc biệt hữu ích trong các quy trình kỹ thuật dữ liệu hoặc xử lý file tự động ở quy mô lớn.

Câu hỏi thường gặp
Lệnh split trong Linux có dùng được với dữ liệu nhị phân không?
Có, lệnh split xử lý cả file văn bản lẫn file nhị phân vì lệnh này chỉ thao tác trên byte hoặc dòng mà không quan tâm nội dung bên trong.
Sau khi dùng split chia nhỏ file, làm sao ghép lại thành file gốc?
Bạn có thể sử dụng lệnh cat theo đúng thứ tự tên file con rồi chuyển hướng về một file mới, ví dụ cat xaa xab xac > merged_file để khôi phục nội dung ban đầu.
split có giới hạn số lượng file đầu ra không và xử lý thế nào nếu cần chia nhiều hơn?
Theo mặc định, số lượng file phụ thuộc vào độ dài hậu tố, nhưng bạn có thể tăng giới hạn này bằng cách dùng tùy chọn -a để kéo dài phần hậu tố, ví dụ -a 3 cho phép tạo nhiều file hơn đáng kể.
Lệnh split Linux là công cụ hữu ích trong để chia các file lớn thành nhiều phần nhỏ, giúp dễ quản lý và xử lý hơn. Nhờ hỗ trợ tách theo số dòng, theo kích thước byte và tùy chỉnh tên file đầu ra, split đặc biệt phù hợp cho các tác vụ sao lưu, truyền tải và tiền xử lý dữ liệu dung lượng lớn.




