Откройте Ваш файл и введите его тип: [1123298]ESC
:%!xxd[1123301] для переключения в шестнадцатеричный режим.
Вы сможете редактировать шестнадцатеричную часть (текстовая часть не будет обновляться по мере изменения шестнадцатеричной части).
После завершения нажмите клавишу escape еще раз и введите текст: [1123302]ESC
:%!xxd -r[1123305], чтобы записать обратно изменения, которые вы сделали в шестнадцатиричном режиме (не забудьте сохранить позже).[1122823].
Если все совпадающие файлы находятся в текущем каталоге (а не в каком-либо подкаталоге или если имена подкаталогов не содержат -
), вы можете использовать для шагов 1-3:
find -regex '.*/[0-9]+-[0-9]+-[0-9]+-NEW\.XML' | sort --field-separator=- --key=2 > filelist
и для шаг 4:
while IFS= read -r line; do
cp -v $line /PATH/TO/DESTFOLDER/
done < filelist
Объяснение: Шаблон регулярного выражения find
соответствует всем файлам с описанным шаблоном. sort
разделяет поля на -
и сортирует сначала по второму полю (дате), затем по следующим полям, здесь третье поле (время).
Способ обработки линий в оболочке описан здесь . Каждая строка сохраняется в переменной $ line
и копируется в папку назначения. Параметр -v
в cp
показывает, какой файл копируется в данный момент.
Из вашего случая я понял, что вам нужно скопировать файлы с этим шаблоном в соответствующую папку на основе отметки времени в имени файла.
для этого вы можете просто выполнить итерацию по ним и переместить каждый файл в соответствующий каталог:
for i in [[:digit:]]*-NEW.XML; do dirname="${i%6:6}"; mv $i $dirname; done;
p.s цикл здесь будет выполнять итерацию только для файлов, соответствующих переданному регулярному выражению .
Zsh имеет глобусный классификатор для изменения сортировки глобусов. Скажите ему, чтобы он сортировал по имени файла с удаленным префиксом UID-
.
cp <->-<->-<->-NEW.XML(oe\''REPLY=${REPLY#*-}'\') /somewhere/else/
(Настройте шаблон, если хотите точно указать количество цифр - <->
совпадает с любой последовательностью цифр)
Обратите внимание, что порядок, в котором копируются файлы, может наблюдаться или не наблюдаться. Большинство файловых систем обеспечивают как минимум вторую гранулярность для временных меток, но копирование каждого файла, вероятно, занимает намного меньше времени. В каталоге нет внутреннего порядка файлов; первый копируемый файл не обязательно является первым файлом, перечисленным в ls -f
(в зависимости от файловой системы это может происходить часто или почти никогда).