Witam,
mam skrypt do przeszukiwania plików .doc i .docx po zadanym słowie. Niestety nie czyta polskich liter.
Czy jest możliwość modyfikacji tak aby czytało polskie litery?
#!/bin/bash
echo -e "\n
Witamy w wyszukiwarcedoc. Ten skrypt przeszuka pliki .doc i .docx w tym katalogu dla podanego ciągu znaków. \n
Wpisz ciąg tekstowy, który chcesz znaleźć... \n"
read response
find . -name "*.doc" |
while read i; do catdoc "$i" |
grep --color=auto -iH --label="$i" "$response"; done
find . -name "*.docx" |
while read i; do docx2txt < "$i" |
grep --color=auto -iH --label="$i" "$response"; done
Nie ma tu czego poprawiać jeśli chodzi o wyszukiwanie. U mnie działa również z polskimi znakami. Nie mogłem jednak patrzeć na formatowanie i estetykę, więc w tym aspekcie pozwoliłem sobie poprawić. Poza tym dodałem info, gdy nie znajdzie danego wyrażenia.
#!/bin/bash
clear
echo -e "Witamy w wyszukiwarce doc. Ten skrypt przeszuka pliki .doc i .docx w tym katalogu dla podanego ciągu znaków.\n"
read -r -p $'\033[0;32mWpisz tekst, który chcesz znaleźć:\033[0m ' response
echo
docfound=$(find . -name "*.doc" | while read -r i; do catdoc "$i" | grep --color=always -iH --label="$i" "$response"; done)
docxfound=$(find . -name "*.docx" | while read -r i; do docx2txt < "$i" | grep --color=always -iH --label="$i" "$response"; done)
if [[ -n "$docfound" || -n "$docxfound" ]]
then
printf "%s\n%s" "$docfound" "$docxfound"
else
echo -e "\033[0;31mNiczego nie znaleziono.\033[0m"
fi
u mnie to wygląda tak: ./2897_heinlein-robert_dubler.doc:<p class="normalText">Nigdy nie zmieniaЕ‚em poprawionych fragmentГіw — w przeciwieЕ„stwie do caЕ‚ej reszty. Kiedy siД™ juЕј wpadnie w trans, czasem okazuje siД™, Ејe moЕјna wyraziД‡ pewnД… myЕ›l w inny, bardziej ciekawy sposГіb. WkrГіtce zorientowaЕ‚em siД™ w naturze tej korekty — prawie zawsze dotyczyЕ‚a ozdobnikГіw. MГіw bez ogrГіdek — albo im siД™ spodoba</p>bo niech siД™ wypchajД…!
To najprawdopodobniej kwestia kodowania dokumentu. W przypadku plików .doc i catdoc powinno dać się to rozwiązać przez odpowiednie ustawienie flag -d i -s. Pozostaje tylko kwestia ustalenia jak został zakodowany ten plik (żeby nie było za łatwo, lista możliwych formatów jest niestety dość długa, iconv -l). docx2txt nie ma żadnych opcji do ustawienia, więc tu nic się nie poradzi.
Najprostszym, moim zdaniem, sposobem by było przekonwertowanie wszystkich dokumentów, jakie masz na Unicode. Pytanie tylko, czy jest na to jakiś prosty sposób, bo jak na razie nie trafiłem na nic konkretnego