staging.inyokaproject.org

Mehrere Dateien konvertieren per Terminal

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4212

Schau doch in die Antwort von rklm, da steht das doch drin (achte auf das &&).

Lorz

(Themenstarter)

Anmeldungsdatum:
1. Juni 2021

Beiträge: Zähle...

Lorz schrieb:

1
sed -i '' 's/latin1/utf8/' -iname \*.tex

funktioniert nicht.

Entschuldigt bitte - Du hast völlig recht Doc_Symbiosis - ich hatte im letzten Post was vertauscht! Das obige sollte da stehen!

Lorz

(Themenstarter)

Anmeldungsdatum:
1. Juni 2021

Beiträge: Zähle...

Soo, ich habe jetzt eine Lösung in einem Mac-Forum bekommen. Eventuell ist die auch Linux anpassbar:

1
sed -i '' 's/latin1/utf8/' /Users/myname/Testordner/*/*.tex

Hier jetzt konkret bis zum Unterordner "1. Grades".

Und

1
find /Users/myname/Testordner/ -maxdepth 5 -name '*.tex' -exec sed -i '' 's/latin1/utf8/' {} +

wenn man die Verzeichnisebene durch einen Zahlenwert angeben möchte (statt "/*/*/*/*..." zu schreiben).

Leider funktionieren die beiden Kommandos bei mir unter Ubuntu nicht. Fehlermeldung: sed: s/latin1/utf8/ kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4212

Das erste Kommando müsste wohl eher so aussehen:

sed -i 's/latin1/utf8/' /Users/myname/Testordner/*/*.tex

Und bei dem find Kommando selbiges:

find /Users/myname/Testordner/ -maxdepth 5 -name '*.tex' -exec sed -i 's/latin1/utf8/' {} +

Das maxdepth kannst Du auch weglassen, dann wird halt eine beliebige Verzeichnistiefe rekursiv durchgegangen. Und falls Du noch Leerzeichen in Dateinamen hast, musst Du wahrscheinlich noch doppelte Anführungsstriche um das {} machen, also:

find /Users/myname/Testordner/ -maxdepth 5 -name '*.tex' -exec sed -i 's/latin1/utf8/' "{}" +
Antworten |