Aplique o mesmo delimitador a todos os arquivos

0

Eu tenho vários arquivos em diferentes subdiretórios. Alguns deles têm um delimitador de tabulação com apenas um 'caractere de tabulação', conforme segue:

1971 1 1 120
1971 1 2 148
1971 1 3 159,5
...

E outros têm um delimitador de tabulação com 7 'caracteres de tabulação', como segue:

1971       1       1       120
1971       1       2       148
...

Existe uma maneira de aplicar o mesmo delimitador 'tab' a todos os arquivos de todos os subdiretórios?

    
por steve 08.10.2015 / 18:34

1 resposta

1

Usando find + rename :

find . -type f -exec rename -n 's/\t{2,}/\t/g' {} \;
  • find : pesquisa uma hierarquia de diretórios
  • . : pesquisa o diretório de trabalho atual
  • -type f : pesquisa apenas arquivos
  • -exec [...] {} [...] \; : executa um comando em cada resultado;
  • rename : renomeia arquivos ou diretórios
  • -n : executa uma execução a seco
  • s/\t{2,}/\t/g : substitui qualquer número de ocorrências de 2 ou mais tabulações por uma única tabulação;

Se o resultado for o esperado, remova a opção -n .

Exemplo de saída ( 1 = \t ):

% tree                                             
.
├── 1
│   ├── 111111
│   ├── 111112
│   ├── 111113
│   ├── 112111
│   ├── 112112
│   ├── 112113
│   ├── 113111
│   ├── 113112
│   └── 113113
├── 2
│   ├── 211111
│   ├── 211112
│   ├── 211113
│   ├── 212111
│   ├── 212112
│   ├── 212113
│   ├── 213111
│   ├── 213112
│   └── 213113
└── 3
    ├── 311111
    ├── 311112
    ├── 311113
    ├── 312111
    ├── 312112
    ├── 312113
    ├── 313111
    ├── 313112
    └── 313113

3 directories, 27 files
% find . -type f -exec rename 's/\t{2,}/\t/g' {} \; 
% tree
.
├── 1
│   ├── 11111
│   ├── 11112
│   ├── 11113
│   ├── 11211
│   ├── 11212
│   ├── 11213
│   ├── 11311
│   ├── 11312
│   └── 11313
├── 2
│   ├── 21111
│   ├── 21112
│   ├── 21113
│   ├── 21211
│   ├── 21212
│   ├── 21213
│   ├── 21311
│   ├── 21312
│   └── 21313
└── 3
    ├── 31111
    ├── 31112
    ├── 31113
    ├── 31211
    ├── 31212
    ├── 31213
    ├── 31311
    ├── 31312
    └── 31313

3 directories, 27 files
    
por kos 08.10.2015 / 19:20