Копировать файлы и каталоги без содержимого файлов


18

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

Буду благодарен за любую помощь.

Ответы:


36

Из man cp

--attributes-only не копировать данные файла, только атрибуты

Итак, если вы хотите скопировать все папки и файлы, которые находятся в somedirectory

делать cp -R --attributes-only somedirectory destinationdirectory


Это именно то, что мне нужно. Большое спасибо.
dagi12

4
+1 потому что я не думал, что кто-то уже реализовал это - очень удивился.
mgarciaisaia

@mgarciaisaia Я был просто удивлен, как и ты, когда я сегодня утром проверил страницу руководства =)
Сергей Колодяжный

10

Приятно, что в 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/{} \;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.