Veja " Por que * not * pars 'ls'? " por que a análise a saída de ls
pode não ser uma boa abordagem.
Para o seu script:
#!/bin/sh
dir="$1"
PAGER="${PAGER:-cat}"
test -d "$dir" || exit 1
find "$dir" -type f -exec "$PAGER" {} \;
Isso levará o primeiro argumento de linha de comando e o atribuirá à variável dir
. A variável PAGER
será definida como cat
se o usuário ainda não tiver configurado para outra coisa.
Se o diretório fornecido é um nome de diretório válido, find
é usado para passar todos os arquivos regulares (incluindo arquivos regulares ocultos) no diretório, ou qualquer um de seus subdiretórios, para o pager.
Para limitar a pesquisa de arquivos apenas ao primeiro nível do diretório fornecido, insira -maxdepth 1
antes da opção -exec
para find
.
Usando:
-
cat
todos os arquivos em /tmp
:
$ ./script /tmp
-
Veja as 10 primeiras linhas de todos os arquivos em seu diretório pessoal:
$ PAGER=head ./script "$HOME"
-
Leia todas as histórias no seu diretório ~/stories
:
$ PAGER=less ./script "$HOME/stories"
Extensão:
#!/bin/sh
dir="$1"
suf="$2"
PAGER="${PAGER:-cat}"
test -d "$dir" || exit 1
find "$dir" -type f -name "*$suf" -exec "$PAGER" {} \;
Isso permitirá que o script receba um sufixo de nome de arquivo adicional como
$ ./script /tmp .txt