1

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

Например, если бы я

/temp/a/a.txt
/temp/a/a.jpg
/temp/a/b.txt
/temp/b/c.txt
/temp/d/d.txt
/temp/d/d.jpg
/temp/d/e.txt
/temp/f.txt

Я хотел бы скопировать все текстовые файлы в /temp2, чтобы структура каталогов выглядела так:

/temp2/a/a.txt
/temp2/a/a.jpg
/temp2/a/b.txt
/temp2/b/c.txt
/temp2/d/d.txt
/temp2/d/d.jpg
/temp2/d/e.txt
/temp2/f.txt

Спасибо за вашу помощь!!

2 ответа2

0

Без дополнительной информации лучшее решение, которое я могу предложить, это:

cp -rp temp temp2
0

Если вы хотите скопировать всю структуру каталогов, просто выполните cp -a /temp /temp2 если /temp2 еще не существует, или cd /temp; cp -a . /temp2 если целевой каталог уже существует. (-a - это специфичные для Linux опции для cp ; в других системах вы можете использовать cp -Rp для разрешения сохранения рекурсивной копии.)

Если вы хотите копировать только определенные файлы на основе их имен, используйте rsync. Он имеет сложные правила включения-исключения; Я написал учебник по этим правилам в ответ на вопрос о том, как это сделать в Unix Stack Exchange.

Если вы хотите сопоставлять файлы по другим критериям, таким как дата, самый простой способ - объединить rsync с правилами сопоставления с образцом в zsh, как в ответе Марселя Стимберга на вышеупомянутый вопрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .