Verschieben der Verzeichnisse mit dem Befehl „find“

Verschieben der Verzeichnisse mit dem Befehl „find“

Ich versuche, ein bestimmtes Verzeichnis in einem Pfad zu finden und das Verzeichnis mithilfe der Suchfunktion in einen anderen Pfad zu verschieben.

Das Quellverzeichnis sieht wie folgt aus:

/Dir1/country1/month1/date1,date2,date3
/Dir1/country2/month1/date1,date2,date3
...
.
.
/Dir1/country10/month1/date1,date2,date3

Ich versuche, das Verzeichnis date1 zu finden und zum Ziel zu wechseln

/Backup/source1/Dir1/

Ich verwende den folgenden Befehl

[root@mytest Dir1]# find -name "date1" -exec mv {} /Backup/source1/Dir1/{} \;

und ich erhalte den folgenden Fehler.

mv: Eigentumsrechte für „/Backup/source1/Dir1/./country1/month1/date1/date1/date1_1.txt“ konnten nicht beibehalten werden: Vorgang nicht zulässig

Nicht sicher, wie man die Duplizierung des Verzeichnisses date1 im Ziel entfernt und"./"verursacht auch Probleme.

Beste Wünsche, KJ

Antwort1

DerLinux-ManpageZustände:

mv - Dateien verschieben (umbenennen)

Sie können also kein mvVerzeichnis verschieben. Sie können es jedoch zunächst kopieren und dann die alte Kopie löschen. Dieser Befehl

   SRC_DIR=$(find . -type d -name date1 -print); echo $SRC_DIR

speichert den relativen Pfad zum gewünschten Verzeichnis in einer praktischen Variable. Jetzt können wir das Verzeichnis an der neuen Position anlegen,

   mkdir /Backup/source1/$SRC_DIR

vorausgesetzt, Sie haben die Berechtigung dazu: Tatsächlich geht es bei der obigen Fehlermeldung darum, dass Sie nicht über ausreichende Berechtigungen verfügen, um eine neue Datei zu erstellen (es hätte ein Ordner sein sollen, wurde aber aufgrund des obigen Fehlers zu einer Datei). Sind Sie sicher, dass das neue /Backup/dir1 Ihnen gehört? Sie sollten das überprüfen und beheben.

Jetzt können Sie den gesamten Inhalt rekursiv in das neue Verzeichnis kopieren:

   cp -R $SRC_DIR/* /Backup/dir1/$SRC_DIR
   cp -R $SRC_DIR/.[a-Z]* /Backup/dir1/$SRC_DIR

und schließlich können Sie die alte Kopie bei Bedarf löschen:

   cd $SRC_DIR
   rm -fR *
   rm -fR .[a-Z]* 

und nun ist das Verzeichnis leer und kann gelöscht werden.

Antwort2

Verwenden Sie statt des Blunt-Tools „move“ lieber rsync. Damit können Sie Verzeichnisbäume im Archivmodus verschieben, wobei Berechtigungen sowie Soft- und Hard-Symbollinks erhalten bleiben.

Wenn Sie als Root tippen, updatedbwird außerdem die locateDatenbank mit Dateien aktualisiert, die sich in den verschiedenen Pfadbäumen der installierten Pakete befinden. Binärdateien, Manpages und Quellbäume. Die Suche mit whereisoder locateist viel schneller, als jedes Mal die eigentliche Datenträgersuche durchzuführen.

verwandte Informationen