find comando equivalente a ls -p

0

Nee to encontrar comando para gerar saída exatamente como se ls -p gerasse?

Com find /path/to/ -mindepth 1 -maxdepth 1 -exec basename {} \; , os diretórios não têm barra final. Preciso que os nomes das pastas de saída tenham uma barra à direita

exemplo de saída:

folder 1/
my-file-1.sh

encontre o comando para listar o conteúdo do diretório sem caminho completo e pastas com uma barra final

    
por user3030994 24.03.2018 / 07:36

2 respostas

0
$ find /path/to -mindepth 1 -maxdepth 1 -exec sh -c '
     [ -d "$1" ] && printf "%s/\n" "${1##*/}" || printf "%s\n" "${1##*/}" ' _ {} \;
aDirectory/
afile

Explicações:

  • [ -d "$1" ] , isso verifica se é um diretório , se sim, então execute seguido por printf :

    printf "%s/\n" "${1##*/}"
    

    else, corra abaixo de printf :

    printf "%s\n" "${1##*/}"
    
    • ${1##*/} : isso remove a coincidência mais longa de tudo * até a última barra / visto começar do início do caminho do arquivo / diretório, o que resultará apenas no último nome do diretório / arquivo.
por 24.03.2018 / 07:57
0

Pelo menos com o GNU find, você pode usar o -printf , por exemplo,

find . -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'
    
por 24.03.2018 / 13:00