Однострочная команда awk
:
awk -v P=-1 '$2<104 {if ($1>P+1)N=$1;P=$1;print $1,$2>"file"N".tmp"}'
Дает результат (, если вы не возражаете против имени файла)
==> file1.tmp <==
1 102.0184
2 100.2430
3 103.9029
4 102.7495
5 102.8825
==> file7.tmp <==
7 103.0479
8 101.2433
==> file10.tmp <==
10 101.5879
Вы можете использовать бит архива (, предполагая, что никто другой не возится с битами архива в интересующих вас файлах ).
Windows устанавливает этот бит при каждом создании или изменении файла.
smb: \> archive 2
Сообщит SMB, что нужно работать только с файлами, для которых установлен этот бит, и сбрасывать его на ноль по завершении.
Так что это поможет с mget
. Для mput
вам нужно противоположное --, и бит архива на стороне сервера не поможет вам увидеть, какие из ваших собственных файлов были изменены, поэтому это решение работает только для mget
.
Эта операция (получения только измененных файлов и сброса их архивных битов )достаточно распространена, чтобы иметь собственную опцию командной строки. См. вариант -T
или --tar
с флагамиc
(создать )иg
(инкрементный ).