Punya GNU?
Versi gnu ls
memiliki --group-directories-first
. Dan cp
sudah -t
.
Tidak ada GNU?
Pada sistem yang tidak memiliki gnu ls
, taruhan terbaik Anda adalah dua panggilan berurutan find
dengan -maxdepth n
/ -mindepth n
dan -type t
dengan opsi yang sesuai.
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
Untuk menyalin file, dengan target terlebih dahulu, Anda harus menulis skrip yang menyimpan argumen pertama, lalu menggunakan shift
, dan menambahkan argumen hingga akhir.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
Awas!
Jika Anda berencana untuk menggunakan ini bersama-sama - yaitu, mengumpulkan daftar dari find
atau ls
(mungkin dengan menggunakan xargs
) dan meneruskannya ke cp
(atau cp
pembungkus), Anda harus mengetahui bahaya apa yang ada di parsing daftar file (pada dasarnya, nama file dapat mengandung karakter seperti baris baru yang dapat mengacaukan skrip Anda). Secara khusus, lihat ke find
's -exec
dan -print0
pilihan dan xargs
' s -0
pilihan.
Alat alternatif untuk menyalin pohon direktori secara efisien.
Anda mungkin ingin melihat menggunakan rsync
sebagai gantinya; ini memiliki banyak fungsi yang mungkin membuat pekerjaan Anda lebih mudah.
ls
memiliki--group-directories-first
saklar.