Ich möchte symbolische Links ( ln -s
) zu allen Dateien (oder einer Dateiklasse, zB endend mit .bar
) in einem bestimmten Verzeichnis erstellen . Angenommen, ich bin im CWD und Typ ls ../source/*.bar
gibt mir
foo.bar
baz.bar
Wie kann ich die Parameterliste übergeben, zu ln -s
der sie schließlich aufgelöst wird?
ln -s ../source/foo.bar
ln -s ../source/baz.bar
Natürlich weiß ich, dass ich ein Bash-Skript schreiben kann, aber es sollte etwas Einfacheres geben, xargs
da es - zumindest für mich - eine gemeinsame Aufgabe zu sein scheint.
linux
bash
symbolic-link
Dastrobu
quelle
quelle
*.bar
. Es wird eine Verknüpfung mit dem Namen erstellt"*.bar"
, die nicht Ihren Wünschen entspricht.shopt -s failglob
. siehe zB unix.stackexchange.com/a/216227/33390 (Das Äquivalent in zsh istsetopt nomatch
, das standardmäßig aktiviert ist)Verwenden
find
Denken Sie auch daran, vollständige Pfade (soweit möglich) mit Symlinks zu verwenden.
quelle
find $certainDir -name "*.bar" -exec ln -s {} \;
? Und warum sollte ich vollständige Pfade verwenden? Ich finde es sehr praktisch zu wissen, dass Links intakt bleiben, wenn ich einen Verzeichnisbaum mit internen Links verschiebe.Sie können entweder mit globstar (bash / zsh set by:) rekursiv versuchen
shopt -s globstar
:Hinweis:
-v
Für ausführliche Informationen hinzugefügt .Oder wenn die Liste zu lang ist, verwenden Sie das
find
Dienstprogramm:Dadurch werden Verknüpfungen im aktuellen Ordner erstellt
dest/
oder in geändert.
.quelle
cp
mit-s
Option kann ein Softlink erstellt werden (oder-l
für Hardlink).Aus dem aktuellen Verzeichnis kann folgendermaßen verwendet werden:
In deinem Fall wird es so sein:
quelle