web-dev-qa-db-fra.com

option cp --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. Existe-t-il un moyen de le faire sur Mac? Pourquoi cette option n'est-elle pas disponible?

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

‘--Parents’ Formez le nom de chaque fichier de destination en ajoutant au répertoire cible une barre oblique et le nom spécifié du fichier source.

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

Par exemple, la commande:

      cp --parents a/b/c existing_dir 

copie le fichier a/b/c dans rép_existant/a/b/c, créant tout répertoire intermédiaire manquant.

41
dmonopoly

Vous pouvez utiliser la commande ditto sur Mac OS X:

La forme de base

ditto <src-path> <dst-path>

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

18
Echelon

Cela m'a beaucoup dérangé aussi. Une solution de contournement 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.

62
Stephan

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

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

Sudo port install coreutils

Ensuite, vous pourrez utiliser la version GNU version cp et d'autres utilitaires de base (ls, date, cat , etc.) en préfixant la commande avec 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 d'accès. Ajoutez ce qui suit à votre ~/.bash_profile:

export PATH="/opt/local/libexec/gnubin:$PATH"
5
Kara

Je ne remplacerais pas mac cp par GNU cp. Je n'utiliserais pas non plus idem car il n'est pas multiplateforme. Utilisez plutôt des outils multiplateformes, tels que rsync:

rsync <srcDir/srcFile> <dst>

Résultat: dst/srcDir/srcFile

2
vikrantt

La façon Homebrew:

Installez coreutils

brew install coreutils

Utilisez la commande GNU g- préfixée

gcp --parents test/withintest/go.rb test2
0
Martin Peter