GNU obtido?
A versão gnu do ls
has --group-directories-first
. E cp
tem -t
.
No GNU?
Em sistemas que não têm gnu é ls
, sua melhor aposta é duas chamadas sucessivas para find
com -maxdepth n
/ -mindepth n
e -type t
com as opções apropriadas.
find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d
Para copiar arquivos, com o destino primeiro, você teria que escrever um script que salve o primeiro argumento, depois use shift
e inclua o argumento no final.
#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"
Cuidado!
Se você estava planejando usá-los juntos - ou seja, coletando a lista de ( find
ou ls
possivelmente usando xargs
) e passando-a para cp
(ou um cp
wrapper), você deve estar ciente de quais perigos existem na análise de listas de arquivos (basicamente, os nomes de arquivos podem conter caracteres como novas linhas que podem atrapalhar seu script). Especificamente, olhar em find
's -exec
e -print0
opções e xargs
' s -0
opção.
Uma ferramenta alternativa para copiar com eficiência as árvores de diretórios.
Você pode querer usar o uso rsync
; possui muitas funcionalidades que podem facilitar seu trabalho.
ls
tem um--group-directories-first
interruptor.