cp -- option parents sur mac

Sous Linux, j'ai une option --parents disponible pour la commande cp donc je peux faire

cp --parents test/withintest/go.rb test2

Http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html

Sur Mac, Je n'ai pas cette option disponible. Est-il un moyen de le faire sur Mac? Pourquoi cette option n'est disponible?

PS. Le but de --parents est le suivant:

' -- parents ' forment le nom de chaque fichier de destination en ajoutant répertoire cible une barre oblique et nom du fichier source.

Le dernier argument donné à cp doit être le nom d'un répertoire.

Par exemple, la commande:

      cp --parents a/b/c existing_dir 

Copie le fichier a/b / C dans existing_dir / A / b / c, en créant les répertoires intermédiaires manquants.

30
demandé sur Laurent Parenteau 2012-06-28 17:45:36

4 réponses

Vous pouvez utiliser la commande ditto sous Mac OS X:

La forme de base

ditto <src-path> <dst-path>

Fait ce que vous voulez. Il y a beaucoup plus d'options aussi - consultez la page de manuel .

17
répondu Echelon 2017-02-03 16:49:49

Cela m'a beaucoup dérangé aussi. Une solution pourrait être d'utiliser rsync.

rsync -R test/withintest/go.rb test2

A le même effet que cp --parents et OS X est livré en standard avec rsync.

43
répondu Stephan 2014-05-15 17:25:21

Vous pouvez installer la version GNU de cp en utilisant MacPorts .

Une fois MacPorts installé, vous pouvez installer les paquets coreutils:

sudo port install coreutils

Ensuite, vous pourrez utiliser la version GNU cp et d'autres utilitaires de base(ls, date, cat, etc.) en préfixant la commande par un g:

gcp --parents test/withintest/go.rb test2

Si vous voulez que ces versions GNU soient utilisées par défaut, vous pouvez ajouter le BIN GNU mettre à jour votre chemin. Ajoutez ce qui suit à votre ~/.bash_profile:

export PATH="/opt/local/libexec/gnubin:$PATH"
4
répondu Kara 2016-11-04 20:26:36

Je ne remplacerais pas mac cp par GNU cp. Je n'utiliserais pas non plus ditto car ce n'est pas multi-plateforme. Utilisez plutôt des outils multiplateformes, tels que rsync:

rsync <srcDir/srcFile> <dst>

Résultat: DST/srcDir / srcFile

1
répondu vikrantt 2017-05-20 19:53:03