web-dev-qa-db-fra.com

Commande Linux cp pour copier un dossier dans le répertoire courant

Je me demande s'il existe une commande identique pour copier un dossier dans le répertoire actuel comme il l'a fait avec l'ancien MS-DOS. Disons que mon emplacement de répertoire actuel est:

/var/www/

J'ai des dossiers et des fichiers sur:

/home/hope/subfolder/docs/
/home/hope/subfolder/images/
/home/hope/subfolder/.config
/home/hope/subfolder/readme.txt

Je sais que la commande suivante:

cp -rT /home/hope/subfolder .

copiera tous les fichiers (même les fichiers cachés par points) et les dossiers du dossier "subfolder" dans le répertoire courant, donc le résultat sera:

/var/www/docs/
/var/www/images/
/var/www/.config
/var/www/readme.txt

On dirait que la commande pour copier le dossier source vers l'emplacement actuel est:

cp -rT /home/hope/subfolder ./subfolder

bien que ce soit bien, je trouve que parfois je ferai des erreurs pour les noms de dossier compliqués pour la destination, donc y a-t-il un moyen d'utiliser une commande comme:

cp -rT /home/hope/subfolder .

ou même comme ça

cp -rT /home/hope/subfolder /var/www/.

pour avoir le résultat suivant:

/var/www/subfolder/docs/
/var/www/subfolder/images/
/var/www/subfolder/.config
/var/www/subfolder/readme.txt

Merci.

20
user702300

Oubliez simplement le paramètre -T, car c'est ce qui empêche la commande de fonctionner correctement:

cp -r /home/hope/subfolder .

Le paramètre -T traite l'argument cible comme un fichier, donc aucune copie ne sera effectuée du tout s'il s'agit en fait d'un répertoire.

Un rappel amical: pratiquement toutes les commandes Unix ont un argument de ligne de commande - help qui vaut la peine d'être essayé en cas de problème :)

31
Vadim Landa

Pour moi, le principal obstacle était la partie/home. Je devais copier des fichiers d'un dossier dans ma maison qui commençait par la lettre "a" dans mon dossier actuel, qui n'était pas à la maison. J'ai donc utilisé:

cp home/tmp/a* ./

la première ligne a fonctionné pour moi. Pendant que j'essayais des commandes comme:

cp ~/home/tmp/a* ./

mais cela n'a pas fonctionné.

3
Aadn