Рейтинг:0

Найдите файлы, измененные между двумя датами, из исходного каталога (рекурсивно) и скопируйте их в целевой каталог с той же структурой каталогов.

флаг ma

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

#!/USR/бен/кш

source=/home/Amal/DELTA/ИСТОЧНИК

target=/home/Amal/DELTA/TARGET

компакт-диск $ источник

найти ./ -type f -newermt "2021-07-08 00:00:00" ! -newermt "2021-09-18 23:59:55" -printf "%h:%p:\0" |

в то время как IFS = ":" файл пути чтения; делать

cp "$file" "$target"/"$path"

сделано

ПРИМЕЧАНИЕ. Исходный код и каталог уже имеют одинаковую структуру каталогов. Мне просто нужно скопировать файлы так же, как каталог SOURCE.

Когда я выполняю этот скрипт, никаких изменений в папке TARGET не происходит.

флаг hr
Вы передаете данные с нулевым разделителем в цикл, но afaik ksh `read` по умолчанию ожидает данные с разделителями новой строки
Amala avatar
флаг ma
@Steeldriver - даже после удаления \ 0 из команды поиска никаких изменений. Файлы не копируются в ЦЕЛЬ.
флаг hr
@Amala, вам нужно будет **заменить** `\0` на `\n` в `printf` - или переключиться на bash, где `read -d ''` можно использовать для чтения "строк" с нулевым разделителем
Amala avatar
флаг ma
@steeldriver - Большое спасибо. Замена \0 на \n сработала.
Рейтинг:0
флаг cn

Одним из способов может быть использование rsync с --include-из-файла вариант. rsync это универсальная утилита копирования файлов, которая по умолчанию копирует структуры каталогов. С --include-из-файла вариант, можно указать rsync в список, текстовый файл, который определяет файлы, которые должны быть включены в копию. Такой список можно создать с помощью найти команда.

Итак, сначала запустите найти чтобы найти нужные файлы и перечислить их в текстовом файле. Затем используйте rsync только скопировать эти файлы. Очевидно, что легко написать сценарий, когда он заработает.

Amala avatar
флаг ma
rsync недоступен на нашем сервере приложений (Linux Server).
vanadium avatar
флаг cn
Это очень важная информация, которую вы можете добавить к своему вопросу. Используйте «редактировать». Я оставлю ответ, потому что подавляющее большинство пользователей смогут установить и использовать rsync.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.