Применить один и тот же разделитель ко всем файлам

У меня есть несколько файлов в разных подкаталогах. Некоторые из них имеют разделитель табуляции с одним «символом табуляции», как показано ниже:

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

А другие имеют разделитель табуляции с 7 «символами табуляции», как показано ниже:

1971       1       1       120
1971       1       2       148
...

Есть ли способ применить один и тот же разделитель «табуляция» ко всем файлам всех подкаталогов?

0
задан 8 October 2015 в 19:53

1 ответ

Используя find + rename:

find . -type f -exec rename -n 's/\t{2,}/\t/g' {} \;
  • find: ищет директивную иерархию
  • .: ищет текущий рабочий справочник
  • -type f: поиски только файлы
  • -exec [...] {} [...] \;: выполняет команду на каждом результате;
  • rename: переименовывает файлы или папки
  • -n: выполняет пробный прогон
  • s/\t{2,}/\t/g: заменяет любое количество происшествий 2 или больше табулирования с единственным табулированием;

, Если результат - ожидаемый, удалите -n выбор.

Типовая продукция (\011 = \t):

% tree                                             
.
├── 1
│   ├── 1\0111\011\0111
│   ├── 1\0111\011\0112
│   ├── 1\0111\011\0113
│   ├── 1\0112\011\0111
│   ├── 1\0112\011\0112
│   ├── 1\0112\011\0113
│   ├── 1\0113\011\0111
│   ├── 1\0113\011\0112
│   └── 1\0113\011\0113
├── 2
│   ├── 2\0111\011\0111
│   ├── 2\0111\011\0112
│   ├── 2\0111\011\0113
│   ├── 2\0112\011\0111
│   ├── 2\0112\011\0112
│   ├── 2\0112\011\0113
│   ├── 2\0113\011\0111
│   ├── 2\0113\011\0112
│   └── 2\0113\011\0113
└── 3
    ├── 3\0111\011\0111
    ├── 3\0111\011\0112
    ├── 3\0111\011\0113
    ├── 3\0112\011\0111
    ├── 3\0112\011\0112
    ├── 3\0112\011\0113
    ├── 3\0113\011\0111
    ├── 3\0113\011\0112
    └── 3\0113\011\0113

3 directories, 27 files
% find . -type f -exec rename 's/\t{2,}/\t/g' {} \; 
% tree
.
├── 1
│   ├── 1\0111\0111
│   ├── 1\0111\0112
│   ├── 1\0111\0113
│   ├── 1\0112\0111
│   ├── 1\0112\0112
│   ├── 1\0112\0113
│   ├── 1\0113\0111
│   ├── 1\0113\0112
│   └── 1\0113\0113
├── 2
│   ├── 2\0111\0111
│   ├── 2\0111\0112
│   ├── 2\0111\0113
│   ├── 2\0112\0111
│   ├── 2\0112\0112
│   ├── 2\0112\0113
│   ├── 2\0113\0111
│   ├── 2\0113\0112
│   └── 2\0113\0113
└── 3
    ├── 3\0111\0111
    ├── 3\0111\0112
    ├── 3\0111\0113
    ├── 3\0112\0111
    ├── 3\0112\0112
    ├── 3\0112\0113
    ├── 3\0113\0111
    ├── 3\0113\0112
    └── 3\0113\0113

3 directories, 27 files
0
ответ дан 9 October 2015 в 05:53
  • 1
    В комментариях выше я имел в виду строго о том, как роют + работы трассировки. server @server от, роют + команда трассировки. Связанный с Вашей конфигурацией сервера, forward:only и forwarders {} опций достаточно, чтобы сделать то, что Вы ожидаете (передавать все запросы к внешнему преобразователю). Ваш внешний преобразователь (192.168.12.4) сделает рекурсивные запросы для Вас и возвратит результаты 192.168.12.90 и затем обратно Вам. – Artex 31 January 2017 в 20:20

Другие вопросы по тегам:

Похожие вопросы: