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 mv
Verzeichnis 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, updatedb
wird außerdem die locate
Datenbank mit Dateien aktualisiert, die sich in den verschiedenen Pfadbäumen der installierten Pakete befinden. Binärdateien, Manpages und Quellbäume. Die Suche mit whereis
oder locate
ist viel schneller, als jedes Mal die eigentliche Datenträgersuche durchzuführen.