93578

Alle Zeilen mit non-ASCII Zeichen in allen Text-Dateien in mehreren Unterverzeichnissen löschen?

Haloo liebe Gemeinde,

und wieder mal habe ich ein Problem mit Linux.

Ich habe Folgendes Verzeichnisstruktur:

Hauptordner
- Unterordner 1
- Unterordner 2
- Unterordner 3
usw. (insgesamt ca. 1000 Untervezeichnisse)

Jedes Unterordner beihaltet ca. 100 txt-Dateien (von 100000 Zeilen bis 10000000 Zeilen).

Ich möchte gerne alle Zeilen , die non-ASCII Zeichen beihalten, in allen Dateien in diesen Unterordnern löschen.

Bis jetzt hatte ich folgende Hintergedanken:

Mir dem Befehl:

find Hauptordner -type f -exec grep -v -P '[\x00-\x08\x0E-\x1F\x80-\xFF]' Datei1.txt > tmp-Datei1.txt   
mv Datei1.txt

kann ich es in einer Datei machen.

Nun wie kann ich das für 100.000 Dateien realiseiren, ohne vorher alle Dateinamen fleißig im Bash aufschreiben (sie haben dazu auch noch kein einheitliches Muster für Dateinamen: 1.txt, new-150.txt, 1(2).txt, bond.txt usw.)?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 395045

Url: https://administrator.de/forum/alle-zeilen-mit-non-ascii-zeichen-in-allen-text-dateien-in-mehreren-unterverzeichnissen-loeschen-395045.html

Ausgedruckt am: 05.05.2025 um 13:05 Uhr

Lochkartenstanzer
Lösung Lochkartenstanzer 07.12.2018 aktualisiert um 23:20:11 Uhr
Goto Top
Zitat von @93578:

Mir dem Befehl:

find Hauptordner -type f -exec grep -v -P '[\x00-\x08\x0E-\x1F\x80-\xFF]' Datei1.txt > tmp-Datei1.txt   
> mv Datei1.txt

kann ich es in einer Datei machen.

Nun wie kann ich das für 100.000 Dateien realiseiren, ohne vorher alle Dateinamen fleißig im Bash aufschreiben (sie haben dazu auch noch kein einheitliches Muster für Dateinamen: 1.txt, new-150.txt, 1(2).txt, bond.txt usw.)?


Moin,

Du schreibst ein kleines Skript filter-die-datei.sh
 
#!bin/bash 

grep -v -P '[\x00-\x08\x0E-\x1F\x80-\xFF]'  $1 > S1.txt
mv $1.txt $1

und dann kannst du mit

find Hauptordner -type f -exec filter-die-datei.sh {} \; 

die Datei filtern

lks
93578
93578 07.12.2018 um 16:09:37 Uhr
Goto Top
Danke! Das ist was ich brauche! Werde es am Wochenende testen.
93578
93578 07.12.2018 um 16:11:30 Uhr
Goto Top
Moment mal:

S41.txt ????

Du meintest wohl $1.txt oder? face-sad
Lochkartenstanzer
Lösung Lochkartenstanzer 07.12.2018 um 16:23:28 Uhr
Goto Top
Zitat von @93578:

Moment mal:

S41.txt ????

Du meintest wohl $1.txt oder? face-sad

Du hast es gemerkt. face-smile

Ja, ist ein doofer Tippfehler.

lks
93578
93578 07.12.2018 um 16:25:22 Uhr
Goto Top
face-wink Frohe Weihnachten! face-wink
Lochkartenstanzer
Lochkartenstanzer 07.12.2018 aktualisiert um 23:24:43 Uhr
Goto Top
Zitat von @93578:

face-wink Frohe Weihnachten! face-wink

Danke Dir auch.

Beachte bei dem Skript, daß es keinerlei Sicherheitvorkehrungen gegen manipulierte Dateipfade und -namen hat. Damit ist einer Code-Injection Tür und Tor geöffnet, wenn es in einer unkontrollierten Umgebung läuft und kein Parameter-Sanitation erfolgt.

Es ist halt einfach quick'n'dirty.

lks