Kopieren Sie Dateien und Ordner mit vollständigem Pfad in Linux-Bash
Ich habe gerade ein einfaches Skript erstellt, das einen Datei- oder Ordnerpfad verwendet und ihn kopiert, wobei der vollständige Pfad in einem Ordner erhalten bleibt, der system
neben dem Skript aufgerufen wird .
Beispiel: Stellen Sie sich vor, ich habe nur diese Ordner in meinem System:
/home/my_user/copy_script /home/my_user/folder1/file1 /home/my_user/folder1/file2 /home/my_user/file3
Wenn ich die Pfade als Argumente übergeben /home/my_user/folder1
und /home/my_user/file3
diese Ordnerstruktur als Ausgabe erhalten möchte:
Dateien vor dem Ausführen des Skripts
/home/my_user/copy_script /home/my_user/folder1/file1 /home/my_user/folder1/file2 /home/my_user/file3
Neue Dateien aus dem Pfad / home / my_user / folder1 erstellt
/home/my_user/system/home/my_user/folder1/file1 /home/my_user/system/home/my_user/folder1/file2
Neue Dateien aus dem Pfad / home / my_user / file3 erstellt
/home/my_user/system/home/my_user/file3
Die Idee, eine Kopie der Konfigurationsdateien in einem Ordner zu haben, der mit gitlab synchronisiert wird, wobei die gleiche Struktur wie mein System erhalten bleibt.
Mein Skript sieht bis jetzt so aus:
#!/bin/bash #need to implement relative paths #https://stackoverflow.com/questions/3963716/how-to-manually-expand-a- special-variable-ex-tilde-in-bash/29310477#29310477 #clears the old folder rm -r ./system #goes through all the arguments for var in "$@" do #It is a folder if [[ -d $var ]]; then mkdir -p "$PWD/system/$var" cp -R $var "$PWD/system/$var/.." echo "$var FOLDER" #It is a file elif [[ -f $var ]]; then mkdir -p "$PWD/system/$var" cp -R $var "$PWD/system/$var/.." echo "$var FILE" #The path is not ok else echo "$var ERROR" fi done
Wenn es ein Ordner ist, denke ich, dass es gut funktioniert:
Beispiel:
Mit der gleichen Ordnerstruktur wie beim Beginn des Aufrufs copy_script /home/my_user/folder1
Zuerst wird der /home/my_user/system/home/my_user/folder1
Pfad erstellt
Dann kopiert folder1
in/home/my_user/system/home/my_user/
Aber mit Dateien funktioniert das nicht, weil es Ordner erstellt, die ich nicht benötige und die Dateien nicht kopieren kann.
Beispiel:
Beim Aufruf copy_script /home/my_user/file3
wird der /home/my_user/system/home/my_user/file3
Pfad erstellt, aber die Datei kann nicht erstellt werden, da ein Ordner mit demselben Namen vorhanden ist.
Könnte mir jemand bitte erklären, wie das geht? Vielen Dank.
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4