Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Suchen und Ersetzen in mehreren Dateien mit Terminal

Nur noch bis morgen: Mit Amazon Pay zahlen und 5 EUR Amazon Gutschein sichern!

Hallo!
Unter Linux kann ich im Terminal mit
find /<Pfad>/<Dateien> -type f -exec sed -i 's/<alter Begriff>/<neuer Begriff>/g' {} \;
erfolgreich Ersetzungen in mehreren Dateien, die sich in dem angegeben Pfad befinden vornehmen.
Dies funktioniert jedoch für den Mac Terminal nicht. Kann mir jemand weiterhelfen, wie dort das Kommando lauten müsste?


Antworten zu Suchen und Ersetzen in mehreren Dateien mit Terminal:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Und was genau funktioniert da nicht?
Abgesehen davon finde ich deinen Befehl ziemlich riskant, ein Tippfehler und du zerklopst dir mit einem Befehl sämtliche Text bzw conf dateien. Wozu genau brauchst du das? Ich mach auch viel mit Linux auch an der Konsole aber ein sed auf alle möglichen Dateien die find liefert musste ich noch nicht loslassen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Danke @GuterJunge für die rasche Antwort!

Ja, ich stimme Dir vollkommen zu - Umbenennung von Dateiinhalten kann gefährlich sein, aus diesem Grund frage ich nach den korrekten Befehlen. Und deshalb auch ganz konkret wie oben: dort ist die Angabe des absoluten Dateipfades vorgesehen, in dem sich die befreffenden Dateien befinden. Dies begrenzt Ersetzungen auf dieses Verzeichnis.
Für den Mac finde ich bei Google nur Kommandos OHNE absolute Pfadangabe. Ich habe das Skript dann in das entsprechende Verzeichnis kopiert, weil ich es so verstanden habe, dass sich das Skript dann automatisch nur dieses Verzeichnis auswirkt. Siehe da: der Mac fragt nach Erlauben Änderungen in Bild- und Video- etc Dateien vornehmen zu dürfen!!! Die Begrenzung hat also auf diese Art nicht funktioniert.
Es ist mir viel zu gefährlich, dieses Skript nicht zu begrenzen auf mit einer absoluten Verzeichnisangabe. Ich will aus Sicherheitsgründen solch ein Skript auch gar nicht auf meinem Rechner anlegen.

Kennt hier jemand solch ein Kommando, was suchen und ersetzen vermag UND absolut auf nur ein Verzeichnis begrenzbar ist? Oder ist so etwas auf dem Mac nicht möglich? (Letzteres scheint mir unbegreiflich aber nahe zu liegen, weil ich es im Netz nicht finde).

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Erklär doch mal kurz was da warum gesucht und ersetzt wird. So versteht doch keiner was du da überhaupt vorhast auf der einen Seite, dir au der anderen Seite aber doch alles zu heiß und gefährlich ist.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 

Zitat
Siehe da: der Mac fragt nach Erlauben Änderungen in Bild- und Video- etc Dateien vornehmen zu dürfen!!! Die Begrenzung hat also auf diese Art nicht funktioniert.
Woraus schließt Du, das die Begrenzung auf diese Art nicht funktioniert? Weil er Bild-, Videodateien erwähnt, obwohl in dem Verzeichnisse keine vorhanden sind? Order weshalb?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
  Woraus schließt Du, das die Begrenzung auf diese Art nicht funktioniert? Weil er Bild-, Videodateien erwähnt, obwohl in dem Verzeichnisse keine vorhanden sind? Order weshalb?

Vor allem ist es immer sehr toll in Videodateien nach strings zu suchen  ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich wollte damit eigentlich feststellen, das die Frage nach der Erlaubnis immer so aussehen wird, egal, ob er in txt oder cfg oder sonstigen Textdateien sucht (in anderen Dateitypen macht das ja wohl wenig Sinn). Der Mac wird nicht jedes Dateiformat für diese allgemeine Abfrage auflisten.
Allerdings könnte das natürlich die falsche oder garkeine Eingabe des Dateityps zu bösen Ergebnissen führen, wie Du bereits erwähntest.
Schön, das ich Windows benutze, da gibt es den Allrounder Notepad++ , der kann sowas nebenbei ganz einfach und übersichtlich.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Also mein Vorhaben:
ich benutze Latex und in den Texdateien kommen "include"-Befehle vor, meistens dieser Art "\includgraphics[...]{imagename}".
Ich habe nun vor, die Bildernamen zu verschlanken. Zum Beispiel
"tsDiagramLoesung" soll zu "tsDiagrammlsg" werden. Oder allgemein: in all meinen Texdateien soll "Loesung" zu "lsg" werden.
Da ich einige Tausend solche Texdateien angelegt habe, wäre der Aufwand, dies händisch zu machen, immens.

Ich weiß, dass man solche Ersetzungen mit dem Terminal machen kann. Und ich will eh lernen, mit dem Terminal umzugehen. Deswegen suche ich nach einem Kommando, die Ersetzungen per Mac Terminal durchzuführen.

Komischerweise ging das mit Linux sofort. Ich habe gesucht, erster Google-Eintrag hat sofort gepasst. Und da dachte ich, dann wird's ja auch mit dem Mac Terminal gehen...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Und die tausenden Dateien sind alle gleichen Typs und in unterschiedlichen Verzeichnissen. Aber es sollen nur welche in einem Verzeichnis geändert werden. Oder doch in mehreren. Und wenn das nun Bildernamen sind, mußt Du dann ja auch die Bilddateien umbenennen, oder wie soll das weiter ablaufen?
 Und nochmal die Frage:

Zitat
Woraus schließt Du, das die Begrenzung auf diese Art nicht funktioniert? Weil er Bild-, Videodateien erwähnt, obwohl in dem Verzeichnisse keine vorhanden sind? Order weshalb?
Oder möchtest Du das nur nicht erlauben, weil Du Angst hast, es wird was geändert, was Du nicht möchtest? Mache doch einfach mal eine Datei in der Du einen Text (etwa "DieKuhRenntSoLangeImKreisBisSieKotzt" hast, der nirgend wo anders vorkommt und kopiere das Ding in ein Verzeichnis, wo Du was ändern willst und in noch ein Anderes. Dann versuchst Du per Terminal diesen einmaligen Textinhalt zu ändern. Dann schau nach was passiert ist. Sind nun beide gändert oder nicht.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Die Lösung ist

sed -i '' 's/old/new/' ~/Desktop/aaa/*.tex

falls man tex-Dateien umwandelt, ansonsten ersetzt man "tex" mit der passenden Endung.

Mein Problem war nicht so ganz einfach zu lösen. Zuvor falsche und auch richtige Kommandos waren gepaart mit dem Problem, dass meine Tex-Files zum Teil Latin-codiert waren und nicht utf8-codiert. Darauf zu kommen hat lange gedauert und ist für Euch hier nur schwer mit einkalkulierbar.

Ich danke trotzdem für Euer Interesse und Eure Hilfsbereitschaft!

« Letzte Änderung: 03.01.22, 15:10:23 von Lorzel »

« komische Textzeile im login screenSystem sichern mit Time Machine ab Mac OS Big Sur? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Unterlänge
In der Typographie lassen sich die einzelnen Buchstaben des Alphabets in ein sogenanntes Linienraster oder Liniensystem vertikal einfügen. Nun lassen sich drei versc...

Linux
Linux bezeichnet ein kostenloses Betriebssystem, das als Open Source verfügbar ist. Die erste Version entstand 1991 und wurde von dem Finnen Linus Torvalds aus dem S...

Dateiendungen
Die Dateiendung, auch Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an den Dateinamen angehä...