Copiez des fichiers et des répertoires sans contenu de fichiers

18

Existe-t-il un moyen de copier la structure du répertoire avec des fichiers mais sans leur contenu. Je veux dire que je veux exactement les mêmes répertoires avec les noms de fichiers mais en les laissant vides / vides. J'ai quelques exemples d'applications dans certains langages de programmation et je veux les réécrire avec mon propre style mais en gardant la façon dont ils ont été organisés en fichiers.

Je vous serais reconnaissant pour toute l'aide apportée.

dagi12
la source

Réponses:

36

De man cp

--attributes-only ne copiez pas les données du fichier, juste les attributs

Donc, si vous souhaitez copier tous les dossiers et fichiers qui se trouvent dans somedirectory

faire cp -R --attributes-only somedirectory destinationdirectory

Sergiy Kolodyazhnyy
la source
C'est exactement ce dont j'ai besoin. Merci beaucoup.
dagi12
4
+1 parce que je ne pensais pas que quelqu'un l'avait déjà implémenté - vraiment surpris.
mgarciaisaia
@mgarciaisaia J'ai été juste surpris comme vous, quand j'ai consulté la page de manuel ce matin =)
Sergiy Kolodyazhnyy
10

C'est bien qu'Ubuntu cpait cette fonctionnalité, mais si vous vous trouvez sur une machine qui ne le fait pas (le style BSD cpne le fait pas, par exemple, donc OS X non plus), c'est très facile à faire find. Le voici en deux lignes (pour plus de lisibilité):

% cd original_dir
% find . -type d -exec mkdir -p ../copy_dir/{} \;
% find . -type f -exec touch ../copy_dir/{} \;

S'il copy_direxiste déjà, vous pouvez ignorer l' -pargument mkdircar puisque findparcourra l'arborescence du répertoire de haut en bas. Pour les gros travaux, vous pouvez réduire de quelques millisecondes environ en mettant fin aux commandes avec +au lieu de \;si votre le findprend en charge (il le fait probablement).

Edit: Les commandes ci-dessus ont négligé de gérer les liens symboliques, qui peuvent être copiés avec un troisième cycle de find( ne pas terminer celui-ci avec +):

% find . -type l -exec cp -R {} ../copy_dir/{} \;
alexis
la source