Gunzip несколько файлов и переименовывают их

du суммирует каталог использования диска каталогом. В Вашем примере, так как текущий каталог не имеет никакого подкаталога, вывод является одной строкой.

При передаче названия файла на командной строке о ее размере сообщают. При передаче названий нескольких файлов это - эквивалентный ¹ к выполнению du многократно; следовательно du .* эквивалентно du .; du ..; du .hidden.

Выполненный du -a видеть место, занятое каждым файлом.

 $ du -a
 4   .hidden
 4   testfile
 12  .

¹ Почти: в некоторых системах, если регулярный файл имеет несколько жестких ссылок, то он только рассчитал в первый раз, он достигнут в детали du вызов.

3
30.10.2015, 02:54
1 ответ

Попробуйте это:

for file in *.gz; do
  gunzip -c "$file" > "${file/.DAT*/.DAT}"
done

Использование подхода gunzipопция произвести несжатый поток к стандартному выводу (-c), таким образом, мы можем перенаправить его в другой файл без второго вызова переименования. Переименование сделано на самой переменной имени файла, с помощью bash замена (соответствуют любому globbing шаблону .DAT* и замените его .DAT). Сам цикл просто выполняет итерации по файлам в текущем каталоге с именами, заканчивающимися .gz.

7
27.01.2020, 21:13
  • 1
    Вы могли объяснить, что делает цикл? –  Pieter van Niekerk 09.07.2012, 17:29
  • 2
    я надеюсь, что это ясно теперь. –  lynxlynxlynx 09.07.2012, 17:47

Теги

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