Question Que signifie «cp: omitting directory»?


J'ai émis la commande suivante:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Lorsque je fais cela, je commence à recevoir les messages suivants:

cp: omitting directory `Tag' 
cp: omitting directory `Test' 
cp: omitting directory `Text' 
cp: omitting directory `TimeSync' 
cp: omitting directory `Tool' 
cp: omitting directory `Translate' 
cp: omitting directory `Uri' 
cp: omitting directory `Validate' 

etc...

Pourquoi est-ce que je reçois ces messages?


365
2018-04-18 15:11


origine




Réponses:


Par défaut, cp copie uniquement les fichiers directs dans, et non les sous-répertoires du répertoire. Le message cp: omitting directory 'directory' vous avertit que le répertoire mentionné n'est pas copié.

Pour ce faire, spécifiez le -r (ou --recursive) option:

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

le page de manuel (commander: man cp) contient un aperçu des options disponibles.


476
2018-04-18 15:15



Merci beaucoup. Je pensais que * le traiterait récursivement d'une manière ou d'une autre. Mais non. : D Merci encore :) - MEM
@MEM: le * est développé par Bash, pas par cp. Testez-le vous-même en mettant echo  devant votre commande. Lorsqu'il est étendu, il correspond à tout ce qui précède ...library/Zend/ (les fichiers et répertoires qu'il contient). - Lekensteyn
Les bonnes nouvelles sont que omitting directory 'directory' ne signifie pas qu'il supprime ce répertoire. - Bishwas Mishra
@Lekensteyn J'essayais de copier le contenu d'un utilisateur sur un autre. Donc, j'ai obtenu la permission de l'utilisateur avec chmod a+rx ~/ après avoir essayé de copier avec cp /home/2110/* /home/2111/ il produit une erreur qui indique la permission refusée. où j'avais tort désolé de commenter parce que je ne peux pas poser de questions en double. J'espère une réponse rapide :) - jasinth premkumar
@jasinthpremkumar Fichiers dans /home/2110 sont la propriété de l'utilisateur 2110 tandis que les fichiers dans /home/2111 sont censés être la propriété de 2111. Pour définir le propriétaire, utilisez quelque chose comme sudo chown -R 2111 /home/2111. - Lekensteyn


Le message signifie que cp n'a pas copié les répertoires listés. C'est le comportement par défaut pour cp - seuls les fichiers sont copiés normalement, que vous les spécifiiez explicitement ou que vous les utilisiez *. Si vous souhaitez que les répertoires copient, utilisez le -r commutateur qui signifie "récursif".


34
2018-04-18 15:15





Quelques choses ici qui doivent vérifier:

  1. Ne pas utiliser sudo. Vous n'en avez pas besoin, vous avez déjà les droits pour écrire des choses dans votre propre répertoire personnel.

  2. Vous pouvez facilement afficher les fichiers et répertoires cachés dans le gestionnaire de fichiers graphique en sélectionnant Afficher / Afficher les fichiers masqués dans le menu. Ou en appuyant sur Ctrl - H.

  3. Vous devez utiliser le -R option dans le cp commande pour copier un répertoire et son contenu.

  4. / home n'est pas votre répertoire personnel. / home / nom d'utilisateur est. Donc, vous essayez probablement de copier du mauvais endroit.

  5. Le shell est sensible à la casse, donc ~ / downloads et ~ / Downloads sont deux choses différentes.


14
2017-10-04 07:02





Lorsque vous copiez un répertoire comme:

cp dir1 copy_of_dir1

Vous ne faites que copier exactement le dir1 lui-même et non les fichiers qu'il contient, donc à la fin, vous vous retrouverez avec une nouvelle structure de répertoire alors que la structure n'existe pas.

En d'autres termes après avoir été copié, il sera dit que mon contenu est file1, file2, etc; Cependant, ces fichiers n'ont pas été copiés et n'existent donc pas.

Donc, pour résoudre ce problème qui peut être soulevé cp par défaut ne copie pas les répertoires et les ignore sauf si vous spécifiez -r option qui copie tous les fichiers récursivement aussi.


2
2017-07-03 07:47





La raison est omitting directory est parce que cp et tous les utilitaires de copie que je connais créent une liste de fichiers et de sous-répertoires à copier avant de commencer à copier les fichiers. Quand le --recursive les options sont manquantes, les sous-répertoires sont supprimés de cette liste. En tant que tel, l'omission fait référence à la suppression de la liste de copie, et non de votre média source. Je crois que cela répond au sens du message.


1
2017-07-24 08:32





Supposons que vous avez deux répertoires 'Tag' et 'Test'

Si vous voulez copier le répertoire 'Tag' dans 'Test', utilisez la commande

$ : cp -r Tag Test (case sensitive)

Généralement, le problème sera résolu avec le code ci-dessus, sinon vous obtenez un message comme

cp: omitting directory `Tag' 
cp: omitting directory `Test'

puis ajoutez des fichiers dans le répertoire 'Tag' puis copiez-les dans 'Test'. En fait, je dois avoir le même problème mais résolu comme ce que j'ai dit en second lieu.


-1
2017-07-03 07:14