Dateien kopieren ohne Endung
Dateien kopieren ohne Endung
Hallo Ihr, habe etwas vermutlich ganz simples vor, weiß aber nicht, wie es geht.
Und zwar habe ich einen Ordner mit ganz vielen html-Dateien. Ich möchte nun alle Dateien kopieren in die jeweils selben Unterordner, aber ohne html-Endung. Und das Rekursiv -also mit Unterordnern....
Beispiel für einen Ordner VORHER:
Dokument1.html
Dokument2.html
Dokument3.html
Beispiel für einen Ordner NACHHER:
Dokument1
Dokument1.html
Dokument2
Dokument2.html
Dokument3
Dokument3.html
Wie geht das?
Viele Grüße desputin
Und zwar habe ich einen Ordner mit ganz vielen html-Dateien. Ich möchte nun alle Dateien kopieren in die jeweils selben Unterordner, aber ohne html-Endung. Und das Rekursiv -also mit Unterordnern....
Beispiel für einen Ordner VORHER:
Dokument1.html
Dokument2.html
Dokument3.html
Beispiel für einen Ordner NACHHER:
Dokument1
Dokument1.html
Dokument2
Dokument2.html
Dokument3
Dokument3.html
Wie geht das?
Viele Grüße desputin
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Dateien kopieren ohne Endung
Falls ich dich richtig verstanden habe...
und falls du noch die directories vorher anlegen musst, packste einfach noch mkdir mit rein
RootRat
Code: Alles auswählen
for f in *.html ; cp $f ${f%.*}/${f%.*} ; done
Code: Alles auswählen
for f in *.html ; do mkdir ${f%.*} ; cp $f ${f%.*}/${f%.*} ; done
Re: Dateien kopieren ohne Endung
Hallo RootRat,
super, danke.
Hm, ich kriege das hier, wenn ich das versuche:
Ordner müssen eigentlich keine angelegt werden, weil es schon eine Ordnerstruktur gibt. In allen Ordnern der Ordnerstruktur liegen html-Dateien, die ich jeweils durch identische html-Dateien aber ohne Endung ergänzen möchte.
super, danke.
Hm, ich kriege das hier, wenn ich das versuche:
Code: Alles auswählen
for f in *.html ; cp $f ${f%.*}/${f%.*} ; done
bash: Syntaxfehler beim unerwarteten Wort `cp'
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Dateien kopieren ohne Endung
Es fehlt ein do vor dem cp:
Damits auch funktioniert, falls du Dateien mit Leerzeichen im Namen hast, habe ich mal " ergänzt.
Code: Alles auswählen
for f in *.html; do cp "$f" "${f%.*}/${f%.*}"; done
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Dateien kopieren ohne Endung
Nun, durch stumpfes copy-paste lernt man eben nicht so viel...
Aber das weisst du ja selber, dass da noch ein "do" hingehoert.
Und wenn es schon eine Ordnerstruktur gibt, dann brauchst ja nur die im lopp
abklappern und dein cp da absetzen.
RootRat
Aber das weisst du ja selber, dass da noch ein "do" hingehoert.
Und wenn es schon eine Ordnerstruktur gibt, dann brauchst ja nur die im lopp
abklappern und dein cp da absetzen.
RootRat
Re: Dateien kopieren ohne Endung
Hallo Ihr,
der Befehl:
hat schon mal funktioniert. Habe noch den Verzeichnisnamen davor weggenommen.
Das mit dem Loop hab ich noch nicht verstanden. ich möchte den Befehl ja rekursiv anwenden. So wie er jetzt ist, macht er nur das jeweils aktuelle Verzeichnis...
der Befehl:
Code: Alles auswählen
for f in *.html; do cp "$f" "${f%.*}"; done
Das mit dem Loop hab ich noch nicht verstanden. ich möchte den Befehl ja rekursiv anwenden. So wie er jetzt ist, macht er nur das jeweils aktuelle Verzeichnis...
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Dateien kopieren ohne Endung
Man konnte sich auch mit "find" was basteln...
gegeben:
Als Denkanstoss vielleicht sowas:
result:
RootRat
gegeben:
Code: Alles auswählen
$ tree
├── dir1
│ ├── file1.html
│ └── file2.html
└── dir2
├── dir3
│ ├── file1.html
│ └── file2.html
├── file1.html
└── file2.html
Code: Alles auswählen
find . -type f | while read f; do cp $f ${f%.*}; done
Code: Alles auswählen
$ tree
├── dir1
│ ├── file1
│ ├── file1.html
│ ├── file2
│ └── file2.html
└── dir2
├── dir3
│ ├── file1
│ ├── file1.html
│ ├── file2
│ └── file2.html
├── file1
├── file1.html
├── file2
└── file2.html
Re: Dateien kopieren ohne Endung
Die Bash könnte das Rekursive auch direkt:desputin hat geschrieben:06.01.2021 23:25:08Das mit dem Loop hab ich noch nicht verstanden. ich möchte den Befehl ja rekursiv anwenden. So wie er jetzt ist, macht er nur das jeweils aktuelle Verzeichnis...
Code: Alles auswählen
shopt -s globstar
for f in **/*.html; do cp "$f" "${f%.*}"; done
Code: Alles auswählen
find . -type f -name '*.html' -execdir sh -c 'cp "${1}" "${1%.*}"' _ {} \;
Re: Dateien kopieren ohne Endung
Hallo Ihr,
also für mich war jetzt diese Lösung am einfachsten. Die anderen gehen bestimmt auch, aber ich hab das hier genommen:
Viele Grüße und danke noch mal an Euch alle
desputin
also für mich war jetzt diese Lösung am einfachsten. Die anderen gehen bestimmt auch, aber ich hab das hier genommen:
Code: Alles auswählen
find . -type f -name '*.html' -execdir sh -c 'cp "${1}" "${1%.*}"' _ {} \;
desputin
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |