Приятно, что в Ubuntu cp
есть эта функция, но если вы окажетесь на машине, которая этого не делает ( cp
например, в стиле BSD нет, как и OS X), это очень легко сделать find
. Вот он как двухслойный (для удобства чтения):
% cd original_dir
% find . -type d -exec mkdir -p ../copy_dir/{} \;
% find . -type f -exec touch ../copy_dir/{} \;
Если он copy_dir
уже существует, вы можете пропустить -p
аргумент, mkdir
поскольку он find
будет проходить по дереву каталогов сверху вниз. Для больших рабочих мест, вы можете сбрить еще миллисекунды или так, прекратив команды с +
вместо того , чтобы, \;
если ваш find
поддерживает его (это , вероятно , делает).
Редактировать: вышеприведенные команды не обрабатываются для обработки символических ссылок, которые могут быть скопированы с третьим прогоном find
( не заканчивайте эту с +
):
% find . -type l -exec cp -R {} ../copy_dir/{} \;