Wenn alle Dateien, in denen Sie suchen, dieselbe Codierung haben:
LC_CTYPE=ru_RU.KOI8-R luit ack-grep "$(echo 'привет' | iconv -t KOI8-R)" *.txt
oder in bash oder zsh
LC_CTYPE=ru_RU.KOI8-R luit ack-grep "$(iconv -t KOI8-R <<<'привет')" *.txt
Oder starten Sie eine untergeordnete Shell in der gewünschten Codierung:
$ LC_CTYPE=ru_RU.KOI8-R luit
$ ack-grep 'привет' *.txt
$ exit
Luit (im Lieferumfang von XFree86 und X.org enthalten) führt das in der Befehlszeile angegebene Programm in dem durch die LC_CTYPE
Einstellung angegebenen Gebietsschema aus , wobei ein UTF-8-Terminal vorausgesetzt wird. Der Befehl wird also im gewünschten Gebietsschema ausgeführt, und Luit übersetzt seine Terminalausgabe in UTF-8.
Ein anderer Ansatz, wenn Sie einen Verzeichnisbaum mit vielen Dateien in einer anderen Codierung haben, besteht darin, eine Ansicht dieses Verzeichnisbaums unter einer von Ihnen bevorzugten Codierung bereitzustellen. Ich denke, das fuseflt- Dateisystem kann dies (ungetestet).
mkdir /utf8-view
fuseflt iconv-koi8r-utf8.conf /some/dir /utf8-view
ack-grep 'привет' /utf8-view/*.txt.utf8
fusermount -u /utf8-view
wo die Konfigurationsdatei iconv-koi8r-utf8.conf
enthält
ext_in =
ext_out = *.utf8
flt_in =
flt_out = .utf8
flt_cmd = iconv -f KOI8-R -t UTF-8