Comment rechercher des fichiers * .odt ou * .doc contenant du texte dans Ubuntu?
J'utilise grep -rl <text to search for>
, mais cela ne fonctionne que pour les fichiers texte.
Remarque: une solution utilisant grep (telle que searchmonkey) ne fonctionnera pas car les fichiers * .doc ou * .odt ont un format spécial.
De Comment rechercher des chaînes dans des fichiers d'un dossier?
De Recherche dans les documents ODT sans les ouvrir?
catdoc
semble fonctionner de manière récursive pour les fichiers .doc
dans 16.04: https://superuser.com/questions/330242/how-to-recursively-find-a-doc-file-that-contains-a- mot spécifique
Il n'y a aucune mention de .docx
, vous devrez donc le découvrir vous-même.
Pour les fichiers .ods
ou .odt
, vous pouvez utiliser le script suivant kaibob @ ubuntuforums.org :
#!/bin/bash
find . -type f -name "*.od*" | while read i ; do
[ "$1" ] || { echo "You forgot search string!" ; exit 1 ; }
unzip -ca "$i" 2>/dev/null | grep -iq "$*"
if [ $? -eq 0 ] ; then
echo "string found in $i" | nl
fi
done
Disons que vous l'appelez "libre-search" et que vous l'avez rendu exécutable.
Ensuite, exécuter libre-search your_string
devrait lister les fichiers contenant your_string .
unzip -ca "$i" 2>/dev/null
prend en charge le contenu indésirable.grep -iq
rend la recherche insensible à la casse.nl
numérote la sortie.