Есть ли способ cat
или меньше
a .odp файл, как у нас для файлов .odt , как упоминалось { {1}} здесь
Комментарий к вашему вопросу, отправленный Ринзвиндом , дал мне идею. Спасибо, мой друг. Я никогда не пробовал это раньше, но, если вы можете извлечь свои odt, вы можете использовать grep для содержимого odt вместо самого odt.
Таким образом, процедура будет примерно такой:
cd THE-FOLDER-CONTAINING-THE-ODT
mkdir ext
unzip THE-ODT-FILE -d ext
cd ext
grep KEYWORDS * -ri
В этом примере я нахожусь в папке с именем «ray», в которой у меня есть документ с именем Practicas-ray-del-angel -gerardo -mbretada-2021.odt
. Итак, я собираюсь использовать тот же процесс, просто изменив параметры, чтобы найти слово «RAYMUNDO».
cd ray
mkdir ext
unzip practicas-ray-del-angel-gerardo-membretada-2021.odt -d ext
cd ext
grep "raymundo" * -ri
Следующий снимок экрана даст вам изображение всего процесса.
Конечно, это будет серьезной проблемой, если вам придется запускать это в кучу документов, поэтому я бы поместил процесс, который будет запускаться с правильными параметрами в командной строке. Файл будет содержать следующее:
if [[ -d "ext" ]]
then
echo "ext exists. Will not be created but we will remove the contents on it."
rm ext/* -rf
else
echo "First time run? Let's create the ext directory."
fi
unzip $1 -d ext
cd ext
grep "$2" * -ri
Сначала мы проверим, существует ли каталог ext
.
if [[ -d "ext" ]]
then
echo "ext exists. Will not be created but we will remove the contents on it."
rm ext/* -rf
else
echo "First time run? Let's create the ext directory."
fi
Если его не существует, нам нужно его создать. Но если он уже существует, нам просто нужно очистить все, что находится внутри папки, чтобы команда zip не перестала спрашивать, хотим ли мы перезаписать существующие файлы. Сообщения на терминале полезны для целей отладки, но при желании их можно опустить.
Как только мы убедимся, что каталог ext готов к использованию, мы распакуем файл, используя первый параметр в командной строке, переданной сценарию.
unzip $1 -d ext
После чего мы войдем в каталог для работы с файлами через:
cd ext
Этот код будет искать нужные слова, указанные в командной строке со вторым параметром внутри каждого отдельного файла на ext
каталог.
grep "$2" * -ri
Обратите внимание, что файл content.xml
отвечает за сохранение текста, поэтому, возможно, вы захотите изменить код для этого:
grep "$2" content.xml -i
Сценарий должен запускаться с :
for i in *.odt; do bash odtgrep.sh "$i" "raymundo"; done;
Это будет:
-l
в grep
в
, чтобы показать меньше данных. Архив: Practicas-ray-del-angel-gerardo -mbretada-2021. odt
Сообщите нам, работает ли это для вас. Любые комментарии или предложения по улучшению этого кода приветствуются.