Có GNU không?
Phiên bản gnu của ls
có --group-directories-first
. Và cp
có -t
.
Không có GNU?
Trên các hệ thống không có gnu's ls
, đặt cược tốt nhất của bạn là hai cuộc gọi liên tiếp đến find
với -maxdepth n
/ -mindepth n
và -type t
với các tùy chọn phù hợp.
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
Để sao chép tệp, với mục tiêu trước tiên, bạn sẽ phải viết một tập lệnh lưu đối số đầu tiên, sau đó sử dụng shift
và nối thêm đối số vào cuối.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
Xem ra!
Nếu bạn đang dự định sử dụng chúng cùng nhau - nghĩa là thu thập danh sách từ find
hoặc ls
(có thể bằng cách sử dụng xargs
) và chuyển nó đến cp
(hoặc cp
trình bao bọc), bạn nên biết những nguy hiểm nằm trong danh sách phân tích tệp (về cơ bản, tên tệp có thể chứa các ký tự như dòng mới có thể làm rối kịch bản của bạn). Cụ thể, nhìn vào find
's -exec
và -print0
tùy chọn và xargs
' s -0
lựa chọn.
Một công cụ thay thế để sao chép hiệu quả cây thư mục.
Bạn có thể muốn xem xét sử dụng rsync
thay thế; nó có rất nhiều chức năng có thể làm cho công việc của bạn dễ dàng hơn.
ls
có--group-directories-first
công tắc.