J'ai une structure de répertoires suivante:
Main_Dir
|
-----------------------------------
Subdir1 Subdir2 Subdir3
| | |
--------- --------- ---------
| | | | | | | | |
fo1 fo2 f03 fo1 fo2 f03 fo1 fo2 f03
Je veux copier tous les sous - répertoires ( Subdir1
, Subdir2
, Subdir3
) dans un nouveau dossier. Mais je veux seulement copier fo1
et fo2
dossiers dans le nouvel endroit.
Je ne sais pas comment cela pourrait être fait.
Réponses:
Si l'arborescence des répertoires est plus que juste,
..../f03
vous pouvez utiliser cettersync
commande pour copier tous lesfo1
&fo2
et exclure tous les autres répertoires portant le nomfo*
.Lorsque vous traitez avec ces types de scénarios de copie que je fais toujours l' utilisation de
rsync
et il est--dry-run
et--verbose
commute donc je peux voir ce qu'il va faire , sans avoir à copier les fichiers.Exemple
Course à sec.
Si vous voulez voir une partie de
rsync
la logique interne de ce qui est inclus / exclu, utilisez le--verbose
commutateur.Si vous devez exclure d'autres formes de répertoires, vous pouvez ajouter plusieurs exclusions.
la source
Utilisation
rsync
:la source
Vous pouvez essayer quelque chose comme ceci:
La
find
commande renvoie tous les sous-répertoires directs de Main_Dir.basename
renverra le nom du sous-répertoire trouvé (par exemple,basename Main_Dir/Subdir1
retoursSubdir1
). Vous utilisez ensuite de la coquille d'expansion de croisillon pour taper éviterfo1
et àfo2
plusieurs reprises et les copier dans le nouveaunew_dir/$(basename $subdir)
répertoire.Dans le cas spécifique où vous mentionnez où il n'y a que des répertoires sous
Main_Dir
et où il n'y a pas d'espaces ou de caractères étranges dans les noms, vous pouvez simplifier ce qui précède pourla source
Si la structure de votre répertoire est exactement comme dans votre exemple (c'est-à-dire que tous les
fo
fichiers sont au même niveau):la source