Sie suchen fast sicher ein Skript, um dies zu tun.
Bei Dateien können Sie sie fest verknüpfen. Wenn dies erfolgreich war, heben Sie die Verknüpfung mit dem Original auf. Dies funktioniert nicht für Verzeichnisse (da die meisten Dateisysteme Hardlinking-Verzeichnisse untersagen).
Minimal getestetes, triviales Skript, das dies tun könnte:
#/bin/sh if ln "$1" "$2" ; then unlink "$1" fi
Die Alternative besteht darin, das mit jedem Pfad verknüpfte Dateisystem zu überprüfen.
Hier fange ich vielleicht mit etwas an
#! /bin/sh STAT=/usr/bin/stat v1=$( $STAT -f "%d" "$1" ) v2=$( $STAT -f "%d" "$2" ) if [[ $v1 == $v2 ]] then mv "$1" "$2" fi
WARNUNG! Dies hat einen Fehler, wenn Sie das oberste Verzeichnis eines Dateisystems als Ziel angeben. Das Beheben des Fehlers ist subtil, kann jedoch so aussehen: Überprüfen Sie, ob das Ziel bereits existiert. Wenn nicht touch
es. Dann geben Sie das Ziel an. Wenn die Kopie fehlschlägt und Sie das Ziel erstellen müssen, um es zu testen, entfernen Sie das Ziel.