cp -r sans fichiers cachés

89

J'ai deux répertoires et un est vide.

Le premier répertoire contient de nombreux sous-répertoires avec des fichiers cachés. Lorsque je cp -rcontiens du premier répertoire au second, les fichiers cachés sont également copiés. Des solutions pour leur échapper?

Rahul
la source
c'est faisable, mais les supprimer après la copie pourrait être plus simple
Karoly Horvath
6
oui, mais copier les fichiers cachés vers d'autres emplacements est un risque de sécurité dans mon cas.
Rahul

Réponses:

127

Vous pouvez utiliser rsync:

rsync -av --exclude=".*" src dest
Eugène Yarmash
la source
1
Des frais généraux par rapport à cp?
Rahul
2
@Rahul Il ne m'est pas venu à l'esprit de le comparer, mais je pense que vous ne devriez pas vous en soucier
Eugene Yarmash
3
Ça marche bien! Merci mec! Juste pour information, rsync serait génial lorsque la taille du fichier est grande, mais égale à cp dans le cas des fichiers plus petits.
Rahul
26

Tu peux faire

cp -r SRC_DIR/* DEST_DIR

pour exclure tous les .files et .dirs du niveau SRC_DIR, mais il copierait tout de même tous les fichiers cachés dans le niveau suivant des sous-répertoires.

Tuxdude
la source
6
C'est exactement le problème .. :)
Rahul
9
Mais cela fonctionne pour GIT-Repos, si vous ne voulez pas copier tout l'index GIT dans .git / ...
Sedat Kilinc
1
J'ai + 'd cette réponse car c'est la solution que je cherchais. Je ne veux pas exclure tous les invisibles de l'arbre, juste les invisibles au niveau de la racine!
l008com
Une autre variante cp SOURCE/[!.]* TARGET.
Carel
4

rsync a l'option "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

Exemple:

rsync -vazC  dir1 dir2
Slitvinov
la source
Tu as raison. J'ai essayé mkdir -p dir1 / subdir; touchez dir1 / subdir / .cvs; rsync -avzC dir1
dir2
rsync -av --exclude = ". *" src dest fonctionne très bien. Reportez-vous la réponse ci-dessus par eugène. Merci quand même! :)
Rahul