GNU'nuz var mı?
Gnu sürümü lsvar --group-directories-first. Ve cpvardır -t.
GNU yok mu?
Yok sistemlerde gnu var lsen iyi bahis için iki ardışık çağrıları olduğunu findile -maxdepth n/ -mindepth nve -type tuygun 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 shiftve argümanı sonuna ekler.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
Dikkat et!
Bunları birlikte kullanmayı planlıyorsanız - yani, listeyi findveya ls(muhtemelen kullanarak xargs) toplama ve listeye cp(veya bir cpsarmalayı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' -execve -print0seç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 rsyncyerine kullanarak bakmak isteyebilirsiniz ; işinizi kolaylaştıracak çok fazla işlevselliğe sahiptir.
lsbir--group-directories-firstanahtarı var.