GNU'nuz var mı?
Gnu sürümü ls
var --group-directories-first
. Ve cp
vardır -t
.
GNU yok mu?
Yok sistemlerde gnu var ls
en iyi bahis için iki ardışık çağrıları olduğunu find
ile -maxdepth n
/ -mindepth n
ve -type t
uygun seçeneklerle.
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
Dosyaları kopyalamak için önce hedefle birlikte, ilk argümanı kaydeden bir komut dosyası yazmanız gerekir, sonra kullanır shift
ve argümanı sonuna ekler.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
Dikkat et!
Bunları birlikte kullanmayı planlıyorsanız - yani, listeyi find
veya ls
(muhtemelen kullanarak xargs
) toplama ve listeye cp
(veya bir cp
sarmalayıcıya) geçirme , dosya listelerini ayrıştırmada hangi tehlikelerin bulunduğunu bilmelisiniz (temelde, dosya isimleri betiğinizi bozabilecek yeni satırlar gibi karakterler içerebilir). Özellikle, find
' -exec
ve -print0
seçenek ve seçenek xargs
' içine bakın -0
.
Dizin ağaçlarını verimli bir şekilde kopyalamak için alternatif bir araç.
Bunun rsync
yerine kullanarak bakmak isteyebilirsiniz ; işinizi kolaylaştıracak çok fazla işlevselliğe sahiptir.
ls
bir--group-directories-first
anahtarı var.