BASH copier tous les fichiers sauf un
Je voudrais copier tous les fichiers d'un dir, sauf pour l'un nommé par Défaut.png. Il semble qu'il y a un certain nombre de façons de le faire. Ce qui semble le plus efficace pour vous?
- Pourquoi avez-vous besoin d'ignorer ce fichier, plutôt que de le supprimer après l'avoir copiée? Existe-t-elle dans le répertoire cible déjà?
- Oui un fichier avec le même nom est déjà vivant dans la cible dir.
- Ou vous voulez enregistrer le temps de la copie, si c'est un fichier de grande taille. Je suis intéressé par cela, mais à l'exclusion d'un répertoire plutôt que d'un fichier.
Vous devez vous connecter pour publier un commentaire.
Simple, si
src/
ne contient que des fichiers:Si
src/
a des sous-répertoires, il omet, mais ne copiez les fichiers à l'intérieur d'eux:Si
src/
a des sous-répertoires, ce n'est pas récursif en eux:+
exécute la commande une fois et passe tous les noms de fichiers à la fois (sous réserve de la limite de longueur de ligne de commande).+
est un peu plus efficace en général.Doit être comme suit:
Si la copie d'un dossier imbriqué dans le dossier actuel (appelée exemple dans le cas ci-dessous), vous devez omettre qu'un répertoire aussi:
shopt -s extglob
de travail, si elle a été désactivée.shopt -s extglob
comme décrit par @BarryKelly. Avec ça, il fonctionne parfaitement.rsync a été mon pc/scp de remplacement pour une longue période de temps:
-r
arg si vous êtes à la synchronisation d'annuairesJe venais de faire:
sauf si les fichiers sont gros. Sinon utiliser, par exemple,
Default.png
existe dans les deux répertoires, il remplacera celui dedestdir
lesrcdir
, puis supprimer le copiéDefault.png
. Au lieu de cela, l'OP veut garder laDefault.png
qui existe déjà dansdestdir
.Cela fonctionne très bien pour la copie de tout sauf de nœud modules 🙂 enjoy et c'est à la suite des réponses ci-dessus. Rsync = > CP comme vous pouvez le voir progresser...
rsync -av à partir de/à/--exclude=node_modules