Parece que você está sendo solicitado a escrever um script recursivo em vez de confiar em um comando que faz a recursão para você.
Aqui está o esqueleto de tal função. Deixei algumas das partes em branco para você preencher.
listAllFiles() {
local dir=$1
local file
for file in "$dir"/*; do
if <$file is a directory>; then
listAllFiles "$file"
else
<print $file>
fi
done
}
Em um nível alto, essa função usa um diretório como seu primeiro argumento. Faz um loop sobre o conteúdo desse diretório. Se encontrar um subdiretório, ele chama a si mesmo. Caso contrário, imprime o que encontrou. Isso acabará recorrendo a uma estrutura de diretórios.
Você pode usar essa função da mesma forma que usaria um comando interno como ls -R
ou find
. Você pode armazenar os resultados em uma variável:
allFilesInCurrentDirectory=$(listAllFiles .)
Ou você pode usá-lo em um pipeline:
listAllFiles ~/ | cmd1 | cmd2