Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Quickly1971
- Beiträge: 110
- Registriert: 08.05.2009 15:26:32
Beitrag
von Quickly1971 » 30.04.2018 12:51:56
Hallo.
Ich möchte gerne im Vereichnnis "/mnt/usb-hdd" alles löschen, außer den Ordner mit dem Namen (Variable) "$hostname".
Sorry, ich habe gesucht. Jedoch echt die Hose voll. Ich möchte hier keine "Versuche" unternehmen die dann im Chaos enden.
Code: Alles auswählen
root@proxmox1:~# ls -lh /mnt/usb-hdd/
total 16K
drwxrwxrwx 4 root root 4.0K Apr 30 12:42 proxmox1
drwxr-xr-x 2 root root 4.0K Apr 30 12:42 test1
drwxr-xr-x 2 root root 4.0K Apr 30 12:42 test2
drwxr-xr-x 2 root root 4.0K Apr 30 12:42 test3
THX
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.
-
cronoik
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von cronoik » 30.04.2018 13:30:52
Code: Alles auswählen
cronoik@debian:~/bal$ ls -alR
.:
total 24
drwxr-xr-x 6 cronoik cronoik 4096 Apr 30 13:18 .
drwxr-xr-x 46 cronoik cronoik 4096 Apr 30 13:15 ..
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:18 proxmox1
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:18 test1
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:19 test2
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:18 test3
./proxmox1:
total 8
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:18 .
drwxr-xr-x 6 cronoik cronoik 4096 Apr 30 13:18 ..
./test1:
total 8
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:18 .
drwxr-xr-x 6 cronoik cronoik 4096 Apr 30 13:18 ..
-rw-r--r-- 1 cronoik cronoik 0 Apr 30 13:18 1.1
-rw-r--r-- 1 cronoik cronoik 0 Apr 30 13:18 1.2
./test2:
total 8
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:19 .
drwxr-xr-x 6 cronoik cronoik 4096 Apr 30 13:18 ..
-rw-r--r-- 1 cronoik cronoik 0 Apr 30 13:19 2.1
-rw-r--r-- 1 cronoik cronoik 0 Apr 30 13:19 2.2
./test3:
total 8
drwxr-xr-x 2 cronoik cronoik 4096 Apr 30 13:18 .
drwxr-xr-x 6 cronoik cronoik 4096 Apr 30 13:18 ..
Im Ordner bal fuerhst du dann folgendes aus:
Code: Alles auswählen
find . -mindepth 1 -type d | grep -v test1 | xargs rm -rf
Wenn du unsicher bist dann fuehre statt dem rm -rf erst einmal ein "xargs echo 'rm -rf'" aus.
Hilf mit unser
Wiki zu verbessern!
-
breakthewall
- Beiträge: 507
- Registriert: 30.12.2016 23:48:51
Beitrag
von breakthewall » 30.04.2018 13:38:31
Beispiel:
Damit würde im jeweiligen Verzeichnis alles gelöscht werden, mit Ausnahme der "test1" genannten Datei. Das Suchmuster kann auch mehrere mittels "|" getrennte Dateien/Verzeichnisse enthalten. Ebenso können auch ganze Dateitypen wie "*.jpg" angegeben werden.
-
Quickly1971
- Beiträge: 110
- Registriert: 08.05.2009 15:26:32
Beitrag
von Quickly1971 » 30.04.2018 16:35:50
Das hilft mir (fast) weiter.
Kann ich den Namen "proxmox1" durch die Variable "hostname" ersetzen?
Das hier geht nicht.
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.
-
Quickly1971
- Beiträge: 110
- Registriert: 08.05.2009 15:26:32
Beitrag
von Quickly1971 » 30.04.2018 17:01:02
Sorry, das hier geht doch.
Code: Alles auswählen
HOSTNAME1="$(hostname)"
shopt -s extglob
rm -r /mnt/usb-hdd/!($HOSTNAME1)
Vielen Dank.
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.
-
tobo
- Beiträge: 2338
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 30.04.2018 17:59:14
Allgemein, auch wenn hostname restriktiv bei der Eingabe ist, solltest du die Ausgabe bzw. die Variable quoten:
Code: Alles auswählen
shopt -s extglob
//entweder:
HOSTNAME1="$(hostname)"
rm -r /mnt/usb-hdd/!("$HOSTNAME1")
//oder direkt:
rm -r /mnt/usb-hdd/!("$(hostname)")
Und bevor man nasse Ängste aussteht, benutzt man bei rm noch den Schalter -i.
-
Meillo
- Moderator
- Beiträge: 9230
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 03.05.2018 09:50:21
Hier noch ein Workaround:
Code: Alles auswählen
mv "$hostname" ".$hostname"
rm -r *
mv ".$hostname" "$hostname"
Use ed once in a while!