Nous copions généralement des fichiers d'un emplacement à un autre emplacement existant à l'aide de commandes telles que cp
, rsync
, et scp
etc. Si l'emplacement cible n'existe pas, nous le créons d'abord, puis le fichier de copie vers cet emplacement nouvellement créé. Jusqu'à présent, c'est ainsi que je copie habituellement des fichiers d'un emplacement à un autre à partir de la ligne de commande. Saviez-vous que nous pouvons copier un fichier et créer automatiquement le répertoire de destination s'il n'existe pas ? Non? Aucun problème! Dans ce guide, nous verrons comment copier des fichiers et créer des répertoires cibles en même temps, avec une seule commande, sous Linux.
Veuillez noter que je ne parle pas de combiner deux commandes. Par exemple, n'importe qui pourrait le faire en combinant deux commandes comme ci-dessous :
$ mkdir -p destination && cp source_file destination
Mais, ce n'est pas une seule commande. Ici, nous avons utilisé deux commandes, à savoir mkdir
et cp
. Il s'agit en fait d'une commande à une ligne. Maintenant, laissez-moi vous montrer comment effectuer la même tâche en utilisant une seule commande.
Copiez des fichiers et créez des répertoires cibles en même temps sous Linux
Nous pouvons le faire en utilisant trois méthodes différentes. Nous verrons d'abord comment le faire en utilisant install
commande.
Méthode 1 – utilisation de install
commande
L'install
La commande copie les fichiers vers n'importe quelle destination de votre choix sous Linux. Il est spécialement utilisé à cette fin par des systèmes de construction comme automake
. Il fait partie de GNU coreutils, vous n'avez donc pas besoin de l'installer.
Pour copier un fichier et créer le répertoire de destination en même temps en utilisant install
commande, exécutez simplement :
$ install -D source-file destination-directory
Exemple :
La commande suivante copie un fichier nommé sk.txt
vers un répertoire cible nommé ostechnix
. Veuillez noter que le répertoire cible n'existe pas. Nous allons copier le fichier et créer le répertoire de destination en même temps avec install
commande comme ci-dessous :
$ install -D sk.txt ostechnix/sk.txt
Vérifiez si le fichier a été copié dans ostechnix
répertoire en listant son contenu avec ls
commande :
$ ls ostechnix/
sk.txt
Voir? Je n'ai pas créé le répertoire cible auparavant. La commande d'installation a créé le répertoire automatiquement et y a enregistré le fichier.
Pratique, non ? En effet! C'est l'une des fonctionnalités utiles de l'install
commande. On peut l'utiliser dans des scripts shell.
Il y a quelques limitations dans cette méthode. Vous devez mentionner le nom du fichier source à la fin de l'emplacement de destination. Si vous ne spécifiez pas le nom du fichier, install
la commande ne le copiera pas et affichera l'erreur suivante :
$ install -D sk.txt ostechnix/
install: target 'ostechnix/' is not a directory: No such file or directory
Vous pouvez copier un fichier à la fois. Il n'y a aucun moyen de copier plusieurs fichiers vers plusieurs destinations en utilisant install
commande.
Nous pouvons également copier des fichiers et modifier la propriété, les autorisations en même temps en utilisant install
commande comme décrit dans le guide suivant.
- Comment copier des fichiers et modifier la propriété et les autorisations en même temps
Pour plus de détails sur la commande d'installation, reportez-vous à sa page de manuel.
$ man install
Méthode 2 : utilisation de cp
commande
Généralement, nous utilisons cp
commande pour copier des fichiers d'un endroit à un autre. Le cp
la commande a une option nommée --parents
ce qui nous permet de copier toute la structure de répertoires du fichier source et de l'enregistrer dans la destination.
Par exemple, disons, le sk.txt
le fichier est enregistré dans ~/Downloads
répertoire et vous vouliez le copier dans ~/Documents
annuaire. Si vous copiez le fichier en utilisant cp
commande de ~/Downloads
vers ~/Documents
, le fichier sera enregistré dans une structure de répertoire comme celle-ci -> ~/Documents/Downloads/sk.txt
.
Faisons-le en temps réel et voyons ce qui se passe.
$ cp --parents Downloads/sk.txt ~/Documents/
Exécutez maintenant l'tree
commande pour vérifier ~/Documents
contenu du répertoire :
$ tree Documents/
Documents/
└── Downloads
└── sk.txt
1 directory, 1 file
N'oubliez pas que nous n'avons créé aucun répertoire dans ~/Documents
emplacement. Le --parents
option du cp
La commande a conservé la structure de répertoires du fichier source.
Contrairement à l'install
commande, vous n'avez pas besoin de spécifier le nom du fichier à la fin du répertoire de destination.
Ce n'est pas directement lié à notre sujet. Cependant, le cp
La commande a créé automatiquement les répertoires cibles, c'est-à-dire qu'elle a conservé la structure de répertoires du fichier source.
Méthode 3 – utilisation de rsync
commande
Rsync
est une solution idéale pour copier et sauvegarder des données entre des répertoires locaux et distants. Pour copier des fichiers et créer des répertoires cibles simultanément à l'aide de la commande rsync, exécutez :
$ rsync sk.txt ostechnix/
Où le répertoire nommé ostechnix
n'a pas à exister. Rsync le créera automatiquement et y enregistrera le fichier source.
Parmi ces trois commandes, je préfère le install
commande. Parce que je peux créer des répertoires imbriqués (répertoire dans un autre répertoire) en utilisant install
commande. Le cp
et rsync
les commandes ne peuvent créer qu'un seul répertoire, pour autant que je sache. Veuillez me corriger si je me trompe.
Lire connexe :
- Comment conserver la propriété et les autorisations de fichiers intactes lors de la copie de fichiers ou de répertoires