Dateien nach Ordner umbennenen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Dateien nach Ordner umbennenen

Beitrag von rannseier » 27.10.2023 15:15:18

Hallo zusammen,

Ich habe einen Ordner mit der Struktur.

20231012/blabla.txt
20231013/blabla.txt
...

Ich möchte nun den Ordnername auf den Dateinamen übertragen und in den Hauptordner verschieben, also so:

aus 20231012/blabla.txt wird 20231012.txt
aus 20231013/blabla.txt wird 20231013.txt

Wie mach ich das am ungeschicksten?

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Dateien nach Ordner umbennenen

Beitrag von tobo » 27.10.2023 17:10:49

Vielleicht so:

Code: Alles auswählen

cd <DIR>
find -type f -exec rename -n 's/\/[^\/]+(\.[^\/.]+)$/$1/' {} +
find -type d -delete
Dateien umbenennen, dann Verzeichnisse löschen. Funtioniert nur richtig bei einer Datei pro Verzeichnis.

EDIT: Rename-Substitution gehärtet.
Zuletzt geändert von tobo am 27.10.2023 20:49:39, insgesamt 1-mal geändert.

rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Re: Dateien nach Ordner umbennenen

Beitrag von rannseier » 27.10.2023 17:31:11

Funktioniert mit dem Synology find leider nicht. Gibt es eine Alternative?

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Dateien nach Ordner umbennenen

Beitrag von tobo » 27.10.2023 17:39:09

Ja ok, ist das Paket rename installiert?

rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Re: Dateien nach Ordner umbennenen

Beitrag von rannseier » 27.10.2023 17:49:31

Habe ich extra nachinstalliert, aber es gibt keine weitere Ausgabe ausser einem neuen Prompt.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Dateien nach Ordner umbennenen

Beitrag von tobo » 27.10.2023 18:36:33

Das ist auch nicht geplant, dass da irgendeine Ausgabe stattfinden soll - wenn die Zeilen mit angepassten <DIR> nacheinander ausgeführt werden, dann ist das kommentarlos erledigt.

rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Re: Dateien nach Ordner umbennenen

Beitrag von rannseier » 27.10.2023 18:47:18

Da passiert nichts, sonst hätte ich das nicht geschrieben.

Code: Alles auswählen

administrator@NAS10:~/schnitzel$ mkdir wurst999
administrator@NAS10:~/schnitzel$ touch wurst999/schnitzel.txt
administrator@NAS10:~/schnitzel$ mkdir wurst900
administrator@NAS10:~/schnitzel$ touch wurst900/schnitzel.txt
administrator@NAS10:~/schnitzel$ find -type f -exec rename 's/\/[^\/.]+\././' {} +
administrator@NAS10:~/schnitzel$ find -type d -delete
find: cannot delete ‘./wurst999’: Directory not empty
find: cannot delete ‘./wurst900’: Directory not empty
administrator@NAS10:~/schnitzel$ ls -laR
.:
total 0
drwx------ 1 administrator users  32 Oct 27 18:46 .
drwxr-xr-x 1 administrator users 206 Oct 27 18:46 ..
drwx------ 1 administrator users  26 Oct 27 18:46 wurst900
drwx------ 1 administrator users  26 Oct 27 18:46 wurst999

./wurst900:
total 0
drwx------ 1 administrator users 26 Oct 27 18:46 .
drwx------ 1 administrator users 32 Oct 27 18:46 ..
-rw------- 1 administrator users  0 Oct 27 18:46 schnitzel.txt

./wurst999:
total 0
drwx------ 1 administrator users 26 Oct 27 18:46 .
drwx------ 1 administrator users 32 Oct 27 18:46 ..
-rw------- 1 administrator users  0 Oct 27 18:46 schnitzel.txt

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Dateien nach Ordner umbennenen

Beitrag von tobo » 27.10.2023 19:01:49

Tja, rename funktioniert offensichtlich nicht - die Datei wird nicht umbenannt. Wie sind denn die Ausgaben von:

Code: Alles auswählen

apt list rename
update-alternatives --config rename

rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Re: Dateien nach Ordner umbennenen

Beitrag von rannseier » 27.10.2023 19:33:59

Code: Alles auswählen

apt list rename
-sh: apt: command not found
update-alternatives --config rename
-sh: update-alternatives: command not found
rename --version
rename from util-linux 2.39

opkg list rename
rename - 2.39-2

find -version
find (GNU findutils) 4.9.0
ich gehe aber davon aus, dass es an find liegt. Mit dem Original find gehts auch nicht. Ich glaube der kann das -exec nicht.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Dateien nach Ordner umbennenen

Beitrag von tobo » 27.10.2023 19:44:12

Nein, wie du aus den Ausgaben ersehen kannst, liegt es an rename. (EDIT: Das zu installierende rename heißt vielleicht file-rename oder rename.pl)
Du musst auf diesem Etwas, das du da betreibst, es schaffen, die Perl-Version von rename zu installieren (EDIT: und diese dann womöglich mit voller Pfadangabe im find angeben). Dann wird das auch funktionieren. Viel Glück...

EDIT: Ergänzungen (hier) und find (in 1. Antwort) angepassst.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Dateien nach Ordner umbennenen

Beitrag von JTH » 28.10.2023 00:10:03

Das lässt sich doch auch ziemlich leicht mit einer Schleife in der Shell lösen:

Code: Alles auswählen

for f in */*.txt; do mv -n -- "$f" "${f%/*.txt}.txt"; rmdir -- "${f%/*.txt}"; done
Auszuführen in dem Ordner, der die Struktur aus dem Eingangsbeitrag enthält. Der Ursprungsname (exkl. der Dateiendung) der zu verschiebenden Dateien ist egal.

Funktioniert ebenfalls am sinnvollsten, wenn es nur eine zu verschiebende Datei pro Ordner gibt. Falls die zu verschiebenden Dateien eine andere Endung als .txt haben, müsste man das an den vier Stellen oben ersetzen.
Manchmal bekannt als Just (another) Terminal Hacker.

DaCoda
Beiträge: 172
Registriert: 09.07.2019 21:58:10

Re: Dateien nach Ordner umbennenen

Beitrag von DaCoda » 29.10.2023 22:13:05

Wieso mountest du die Synology nicht und führst das Skript von deinem Debian Rechner aus aus?

rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Re: Dateien nach Ordner umbennenen

Beitrag von rannseier » 30.10.2023 10:16:28

DaCoda hat geschrieben: ↑ zum Beitrag ↑
29.10.2023 22:13:05
Wieso mountest du die Synology nicht und führst das Skript von deinem Debian Rechner aus aus?
Das Ding steht im Rechenzentrum, da gehe ich nur mit ssh drauf.

rannseier
Beiträge: 57
Registriert: 24.09.2007 12:37:30

Re: Dateien nach Ordner umbennenen

Beitrag von rannseier » 30.10.2023 10:17:52

JTH hat geschrieben: ↑ zum Beitrag ↑
28.10.2023 00:10:03
Das lässt sich doch auch ziemlich leicht mit einer Schleife in der Shell lösen:

Code: Alles auswählen

for f in */*.txt; do mv -n -- "$f" "${f%/*.txt}.txt"; rmdir -- "${f%/*.txt}"; done
Die for-Schleife funktioniert, danke.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Dateien nach Ordner umbennenen

Beitrag von MSfree » 30.10.2023 10:22:50

rannseier hat geschrieben: ↑ zum Beitrag ↑
30.10.2023 10:16:28
DaCoda hat geschrieben: ↑ zum Beitrag ↑
29.10.2023 22:13:05
Wieso mountest du die Synology nicht und führst das Skript von deinem Debian Rechner aus aus?
Das Ding steht im Rechenzentrum, da gehe ich nur mit ssh drauf.
Dann mounte das Ding mit Debiansshfs und führe das Skript von deinem Debian Rechner aus.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Dateien nach Ordner umbennenen

Beitrag von JTH » 30.10.2023 13:12:39

rannseier hat geschrieben: ↑ zum Beitrag ↑
30.10.2023 10:17:52
Die for-Schleife funktioniert, danke.
Dann ergänz gerne noch ein „[gelöst]“ in der Titelzeile des ersten Beitrags :wink:
Manchmal bekannt als Just (another) Terminal Hacker.

Antworten