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.
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 .
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.
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"
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