Gần đây tôi đã sao chép và di chuyển một số lượng lớn tệp (~ 400.000). Tôi biết rằng có những hạn chế về số lượng đối số có thể được mở rộng trên dòng lệnh Bash, vì vậy tôi đã sử dụng xargs để giới hạn số được tạo ra.Số đối số Bash tối đa! = Max đối số num cp?
Ra khỏi tò mò, tôi tự hỏi không biết số lượng tối đa của các đối số mà tôi có thể sử dụng được, và tôi thấy this post nói rằng đó là hệ thống phụ thuộc, và rằng tôi có thể chạy lệnh này để tìm hiểu:
$ getconf ARG_MAX
Trước sự ngạc nhiên của tôi, anwser tôi trở là:
2621440
Chỉ hơn 2.600.000. Như tôi đã nói, số lượng tệp mà tôi đang thao tác ít hơn nhiều so với khoảng 400k. Tôi chắc chắn cần sử dụng phương pháp di chuyển và sao chép các tệp này theo phương pháp xargs
, vì tôi đã thử sử dụng một số thông thường mv * ...
hoặc cp * ...
và nhận được lỗi 'Danh sách đối số quá dài'.
Vì vậy, hãy thực hiện các lệnh mv
và cp
có giới hạn cố định riêng về số lượng đối số mà tôi có thể sử dụng (tôi không thể tìm thấy bất kỳ điều gì trong trang người đàn ông của họ).
Tại sao bạn phải chỉ định từng tệp? Bạn không thể chỉ định thư mục họ đang ở hoặc một cái gì đó như thế? –
@Christoffer Tôi không chỉ sao chép một thư mục từ nơi này sang nơi khác, tôi đang sao chép các tệp cụ thể, đổi tên các nhóm tệp, di chuyển các tệp nhất định từ địa điểm này sang nơi khác. Tôi không có vấn đề trong thực tế thực hiện các hoạt động này. Tôi chỉ tò mò về những hạn chế cụ thể của lệnh 'cp' và' mv'. –