Отримав GNU?
Версія gnu lsмає --group-directories-first. І cpмає -t.
Ні GNU?
У системах, у яких немає гну ls, найкраща пропозиція - це два наступні дзвінки findз -maxdepth n/ -mindepth nі -type tз відповідними опціями.
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
Для копіювання файлів, спочатку цільовим, вам доведеться написати сценарій, який зберігає перший аргумент, потім використовує shiftта додає аргумент до кінця.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
Стережись!
Якщо ви планували використовувати їх разом - тобто збирати список із findабо ls(можливо, використовуючи xargs) та передаючи його cp(або cpобгортці), ви повинні знати про те, які небезпеки полягають у розборі списків файлів (в основному, імена файлів можуть містять символи, такі як нові рядки, які можуть зіпсувати ваш сценарій). Зокрема, перегляньте find's -execта -print0варіанти та xargs' s -0варіант.
Альтернативний інструмент для ефективного копіювання дерев каталогів.
Ви можете rsyncзамість цього використати ; він має багато функціональних можливостей, які можуть полегшити вашу роботу.
lsмає--group-directories-firstвимикач.