lista arquivos em um diretório sem listar os que estão no diretório atual

3

Digamos que eu tenha um arquivo *.txt em um diretório txtpath=/path/to/txt/ .

Eu gostaria de listar *.txt arquivos em $txtpath do diretório atual (não $txtpath ) sem listar os arquivos no diretório atual, como acontece se eu executar ls *.txt $txtpath .

Eu consegui listar os arquivos *.txt apenas em $txtpath com este comando: find $txtpath -name '*.txt' | sed 's/\// /g' | grep -o '[^ ]*$'

Mas talvez haja uma solução mais elegante?

    
por aechchiki 17.08.2017 / 10:25

1 resposta

5

Basta especificar o caminho completo junto com o padrão:

ls -d -- "${txtpath}"/*.txt

Embora, na verdade, a listagem seja feita pela globalização do shell, ls acaba imprimindo apenas os argumentos que recebe do shell. Você também pode usar printf aqui:

printf '%s\n' "${txtpath}"/*.txt

O que daria o mesmo resultado, exceto (nos shells que não cancelam comandos em globs não correspondentes) no caso em que não há nenhum arquivo txt não oculto no diretório.

    
por 17.08.2017 / 10:28

Tags