Подкаталог копии от 1 каталога до другого

Я должен сделать копию содержания одного каталога другому.

Я должен скопировать только 1 подпапку.

Например; если мне назвали папку "от" и хочу скопировать один из, его - подпапки (со всем материалом в нем), это называют "21-01-2015" <-это смены имени каждый день, и я хочу выполнить это через cronjob к папке "к"

+ from
    - 21-01-2015 (**this name changes all the time**)
    - month (**this stays always the same**)

Я в настоящее время использую эту команду: cp -a /path/from /path/to но эта команда делает копию папки "от" наряду со всем материалом в нем...

таким образом, то, когда Вы - внутренняя папка "к" нему, становится чем-то вроде этого:

+ to
    + from
        - 21-01-2015
        - month

вместо того, как мне нужен он, который является

+ to
    - 21-01-2015

как я могу достигнуть чего-то вроде этого?

спасибо

0
задан 21 January 2015 в 14:46

3 ответа

CP-a/path/from /*/path/to скопирует содержание/path/from, не каталог, если Вы имеете другие файлы/директоров в/path/from, и только хотите скопировать тот, необходимо будет придумать шаблон для соответствия ему.

0
ответ дан 6 October 2019 в 03:36

Можно попробовать эту команду:

cp -a from/$(ls from | grep ^[0-9][0-9]) to/
0
ответ дан 6 October 2019 в 03:36

проблема с CP команды-a/path/from/path/to состоит в том, что оно сделает рекурсивную копию, что означает, что оно скопирует исходный каталог (в Вашем случае "/path/from") и все под ним.

то, что Вы хотите, является командой для рекурсивного копирования "21-01-2015" каталог в "от". Команда, которую необходимо использовать:

cp -a /path/from/21-01-2015 /path/to

Примечание, что Вы упомянули, что каталог в "от" меняет имена. Вы не упомянули, остается ли каталог от предыдущего задания позади. Если/path/from содержит несколько подкаталогов, и Вы используете подстановочный знак в своей команде, которую Вы скопируете по всем каталогам, которые Вы уже скопировали (это может или не может быть тем, что Вы хотите). Если Вы не заботитесь о копировании по подкаталогам, Вы уже скопировали в предыдущем задании крона тогда, Вы могли использовать следующую команду для копирования любого файла или папки, которая запускается с числа (это, конечно, НЕ скопирует "месяц")

cp -a /path/from/[0-9]* /path/to

, Если Вы не захотите копировать по каждому подкаталогу "с" каждого раза выполнения cronjob (т.е. Вы просто хотите скопировать по файлам, которые были добавлены то начиная с последнего cronjob) Вы будете лучше обслуживаться с помощью rsync. rsync управляют, чтобы Вы использовали бы, будет что-то подобное:

rsync -avz --exclude 'month' /path/from/ /path/to/

, но проверьте страницу справочника на корректные опции сделать точно, что Вы хотите (например, Вы возможно не хотите подробный на в производстве).

0
ответ дан 6 October 2019 в 03:36

Другие вопросы по тегам:

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