Você quer dizer assim, apenas prefixando o diretório atual para cada nome de arquivo?
ls -l | awk -v PWD=$PWD '{printf("%s %s/%s\n", $5, PWD, $9); }'
(o -v
apenas importa a variável shell $PWD
para o script awk).
Ou algo mais?
OK, aparentemente o que você quer é
$ cd /some/path/to/somewhere
$ <insert command here>
somewhere/file1 size1
somewhere/file2 size2
...
está correto ?
Se sim, a mudança que você precisa é esta:
ls -l | awk -v PWD=$(basename $PWD) '{printf("%s/%s %s\n", PWD, $9, $5); }'
Se você tem um shell mais antigo, o $()
pode não funcionar e, nesse caso, tente:
ls -l | awk -v PWD='basename $PWD' '{printf("%s/%s %s\n", PWD, $9, $5); }'
em vez disso. Não tenho acesso imediato a nenhum shell que não ofereça suporte a $()
, mas não consigo pensar de onde mais seu erro Illegal variable name
poderia vir, quando isso funciona para mim.
Se ainda não funcionar, por favor descreva sua plataforma, shell, versão do awk etc. em sua pergunta - o tópico do comentário está ficando muito longo e estou ficando sem palpites: -)