stat -c "%Y/%n/%y" * | awk -F'/' 'NR==1,NR==3 {print $2"|"$3}'
Ou:
stat -c "%Y/%n/%y" * | awk -F'/' 'BEGIN {OFS="|"} NR==1,NR==3 {print $2,$3}'
Explicação:
Em vez de # , talvez você queira usar / (o separador de diretório), já que ele não pode fazer parte de um nome de arquivo.
O separador do campo awk de entrada precisa ser definido de acordo: -F'/' .
Como já foi comentado em um comentário de @steamdriver , você tem duas maneiras de escolher um separador de campo de saída .
- Use a concatenação de string:
print $2"|"$3. - Defina
OFS="|"e, em seguida,print $2,$3.
Eu escolhi aspas simples ' entre aspas duplas " , o que reduz a necessidade de escape neste caso.
Atualização:
Como a pergunta agora especifica que a saída stat pode conter o separador de diretório, / não seria uma boa escolha para o separador de registro. O único outro caractere que eu conheço que não é permitido em nomes de arquivos é NUL , mas seu uso é problemático, pelo menos neste caso. Minha sugestão seria criar uma string desajeitada que é muito improvável (embora permitida) para ser encontrada como parte de um nome de arquivo. Por acaso, \x0 (que é uma representação de NUL ) pode ser uma boa escolha:
stat -c "%Y\x0%n\x0%y" * | awk -F\x0 'BEGIN {OFS="|"} NR==1,NR==3 {print $2"|"$3}'