rsync, исключая пустые файлы

Используя = с дополнительным окружающим пробелом как разделитель:

awk -F '[[:blank:]]*=[[:blank:]]*' '
    $1 == "Name" {name = $2; next}
    $1 != "End"  {print name, $1, $2}
' filename

Пример

При рассмотрении их awk решения это может стать немного сбивающим с толку, что продолжается. При вставке некоторых хорошо помещенных операторов печати, можно начать видеть визуальным способом, что продолжается:

$ awk -F '[[:blank:]]*=[[:blank:]]*' '
      $1 == "Name" { name = $2; print "--NAME: "$2; next }; 
      $1 != "End" { print " --END: "name,$1,$2 }
' sample.txt

Который производит следующий вывод:

--NAME: x:y
 --END: x:y Z a:b.c
 --END: x:y Z1 a1:b1.c1
--NAME: x1:y1
 --END: x1:y1 Z2 a2:b2.c2
 --END: x1:y1 Z3 a3:b3.c3
 --END: x1:y1 Z4 a4:b4.c4
--NAME: l:k
 --END: l:k s w:e.v
3
01.04.2015, 10:45
2 ответа

rsync имеет опцию - Min-size :

 --min-size=SIZE         don't transfer any file smaller than SIZE

, которые должны помочь вам, если у вас есть файлы, которые должны быть переданы, если нет файла размера нуля байта на Сторона назначения вещей.

AFAIK Нет возможности сказать rsync, чтобы принять специальные действия на основе источника и стороны назначения.

5
27.01.2020, 21:16

Обратите внимание, :чтобы избежать перезаписи -файлов с файлом нулевой длины, вам необходимо установить --min-size=1Невозможно иметь файл меньше нулевого размера. Если только справочная страница не содержит ошибки и там должно быть написано «не передавать файлы меньшего или равного SIZE»

0
02.08.2020, 22:24

Теги

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