93578
Goto Top

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.)?

Content-Key: 395045

Url: https://administrator.de/contentid/395045

Printed on: April 24, 2024 at 19:04 o'clock

Member: Lochkartenstanzer
Solution Lochkartenstanzer Dec 07, 2018 updated at 22:20:11 (UTC)
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
Mitglied: 93578
93578 Dec 07, 2018 at 15:09:37 (UTC)
Goto Top
Danke! Das ist was ich brauche! Werde es am Wochenende testen.
Mitglied: 93578
93578 Dec 07, 2018 at 15:11:30 (UTC)
Goto Top
Moment mal:

S41.txt ????

Du meintest wohl $1.txt oder? face-sad
Member: Lochkartenstanzer
Solution Lochkartenstanzer Dec 07, 2018 at 15:23:28 (UTC)
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
Mitglied: 93578
93578 Dec 07, 2018 at 15:25:22 (UTC)
Goto Top
face-wink Frohe Weihnachten! face-wink
Member: Lochkartenstanzer
Lochkartenstanzer Dec 07, 2018 updated at 22:24:43 (UTC)
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