Приємно, що 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/{} \;