Das Thema erklärt es - im Grunde habe ich ein Bash-Skript, das auf einem Linux-System und einem Windows-System mit Cygwin verwendet wird, wobei der folgende Befehl perfekt funktioniert:
cp --parents
Wenn Sie jedoch denselben Befehl auf einem Mac im Terminal ausführen, wird der folgende Fehler ausgegeben:
cp: illegal option -- -
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
Ich benutze den Befehl in diesem Zusammenhang, um eine ausgewählte Liste von Dateien in ein Ausgabeverzeichnis zu kopieren und ihre Verzeichnisstruktur beizubehalten:
cp --parents foo/gen1.file foo/bar/gen2.file foo/gen3.bar bar/foo/bar.file ~/my-output/
Was kann ich tun, um das cp --parents
Verhalten zu bekommen ?
macos
bash-scripting
cp
udjamaflip
quelle
quelle
rsync -av foo ~/my-output/
würde das für Sie funktionieren. Sie können bestimmte Dateien mit Filterregeln auswählen. Aber das weicht langsam von Ihrer ursprünglichen Frage ab.Antworten:
Ich habe es geschafft, diesen Befehl unter MAC zu synthetisieren, indem ich den Rsync-Parameter -R verwendet habe, um die relative Verzeichnisstruktur der Datei zu kopieren, die ich kopiert habe.
Syntax:
Verwendungszweck:
Dies führt zu demselben Ergebnis, obwohl ich mir sicher bin, dass durch die Verwendung von RSYNC und nicht von CP ein gewisser Mehraufwand entsteht
quelle
--parents
ist wahrscheinlich ein Nicht-POSIX-spezifisches Verhalten für GNUcp
, während dascp
in OS X abgeleitete BSD es nicht hat.Sie können wahrscheinlich die gewünschte Funktionalität erhalten, indem Sie GNU
cp
auf Ihrem Mac installieren und verwenden. Es ist wahrscheinlich Teil eines GNU-Pakets namensfileutils
, und Sie können es wahrscheinlich mit Homebrew, MacPorts oder Fink installieren.quelle
Haben Sie
basename
? Wenn ja:quelle