Como remover as permissões de diretório do comando ls canalizado pelo awk? [fechadas]

0

Na minha configuração personalizada do ZSH, tenho esta função:

cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}'; }

Produz:

➜  test cll
total 32
644 -rw-r--r--    1 work  admin     0B Oct  7 18:55 .hidden
644 -rw-r--r--    1 work  admin   480B Aug 22  2016 gulpfile.js
644 -rw-r--r--    1 work  admin   149B Jan  7  2017 index.php
755 drwxr-xr-x  247 work  admin   8.2K Aug 22  2016 node_modules
644 -rw-r--r--    1 work  admin   1.0K Aug 22  2016 test.less
644 -rw-r--r--    1 work  admin   664B Aug 22  2016 test.min.css
755 -rwxr-xr-x    1 work  admin     0B Oct  7 18:54 try

Ele também suporta cores, então meus arquivos executáveis e tais têm cores bonitas:)

Desejo remover a coluna de divisão de permissões (ex: -rw-r--r-- ) dela. Então eu quero que seja assim:

644    1 work  admin     0B Oct  7 18:55 .hidden
644    1 work  admin   480B Aug 22  2016 gulpfile.js
644    1 work  admin   149B Jan  7  2017 index.php
755  247 work  admin   8.2K Aug 22  2016 node_modules
644    1 work  admin   1.0K Aug 22  2016 test.less
644    1 work  admin   664B Aug 22  2016 test.min.css
755    1 work  admin     0B Oct  7 18:54 try

Eu tentei mexer com isso, mas tudo que eu faço, isso quebra. Estou aberto a um método completamente diferente (não percorrendo awk ).

Solução final:

Obrigado ao @Skaperen por trazer cut para minha atenção. Eu canalizei a função e funcionou muito bem! Aqui está a saída agora:

➜  test cll
total
 644  work  admin     0B Oct  7 18:55 .hidden
 644  work  admin   480B Aug 22  2016 gulpfile.js
 644  work  admin   149B Jan  7  2017 index.php
 755  work  admin   8.2K Aug 22  2016 node_modules
 644  work  admin   1.0K Aug 22  2016 test.less
 644  work  admin   664B Aug 22  2016 test.min.css
 755  work  admin     0B Oct  7 18:54 try

Aqui está a função do meu aliases.zsh (configuração personalizada):

cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}' | cut -c 1-5,21-; }

A única coisa que tornaria isso perfeito, é se eu pudesse adicionar uma coluna personalizada para analisar se é um "Diretório", "Arquivo", "Link simbólico", etc.

    
por Wade 08.10.2017 / 01:44

1 resposta

1

Pipe através do comando cut -c 1-3,14- . ajustar os números, se você precisar ajustá-lo. Do man cut para mais detalhes.

    
por 08.10.2017 / 01:56