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

17

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

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

    
задан dagi12 15.05.2015 в 18:05
источник

2 ответа

35

От man cp

  

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

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

do cp -R --attributes-only somedirectory destinationdirectory

    
ответ дан Sergiy Kolodyazhnyy 15.05.2015 в 18:12
источник
10

Приятно, что Ubuntu cp имеет эту функцию, но если вы должны найти себя на машине, которая этого не делает (например, BSD-стиль cp не работает, так что 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/{} \;
    
ответ дан alexis 15.05.2015 в 23:14