जवाबों:
मैंने ssconvert टूल (Gnumeric से) का उपयोग करके एक बनाया। आपको पहले Gnumeric स्थापित करने की आवश्यकता है:
sudo apt-get install gnumeric
आप सामग्री को स्क्रिप्ट और कॉल के रूप में सहेज सकते हैं:
./script-find-in-xls.sh text
स्क्रिप्ट की सामग्री।
#!/bin/sh
# $1 - text to find
if [ -z "$1" ]
then
echo 'Please, the text is mandatory'
exit 1
fi
rm -rf /tmp/xls-csv/
mkdir /tmp/xls-csv/
cd /tmp/xls-csv/
cp /location/of/excel-files/*.xls /tmp/xls-csv/
for f in *.xls; do
ssconvert -S --import-encoding=ISO8859-1 ./"$f" ./"${f%.xls}.csv"
done
cat *.csv.* > all-xls-content.txt
rm *.csv.*
if cat all-xls-content.txt | egrep --color $1; then
echo 'found'
else
echo 'not found'
fi
स्क्रिप्ट csv फ़ाइलों में सभी xls फ़ाइलों को परिवर्तित करती है, csv फ़ाइलों को एक ही फाइल में शामिल करती है और उपयोग करती है egrep पाठ खोजने के लिए।
कोड यह सही नहीं है, लेकिन काम करते हैं।
यदि आप एक अनुक्रमण अनुप्रयोग स्थापित करने के साथ ठीक हैं, तो यह एक उत्तर हो सकता है।
मैं व्यक्तिगत रूप से उपयोग करता हूं recoll , जो सेटअप और स्थापित करना आसान है। इसका डिफ़ॉल्ट इंटरफ़ेस एक GUI है, लेकिन CLI में इसका उपयोग करना संभव है
recoll -q <search terms>
आप इसके अनुक्रमणिका को अपडेट करने के लिए एक निर्धारित कार्य को सेटअप कर सकते हैं, या इसे मैन्युअल रूप से लॉन्च कर सकते हैं recollindex (दोनों स्थितियों में आप अपनी पसंद के मार्ग में सूचकांक को प्रतिबंधित कर सकते हैं)।
मेरी भी यही समस्या थी। यह स्क्रिप्ट चलाएँ:
python search.py /home/user/directory string
यहाँ आप मेरा समाधान खोजें:
#!/usr/bin/python
import os, sys
import xlrd
def find(path, word):
l = []
d = os.listdir(path)
for file in d:
filename = str(path) +'/' + str(file)
print ('Finding in %s' %file)
if filename.endswith('.xlsx'):
wb = xlrd.open_workbook(filename)
ws = wb.sheet_by_index(0)
for i, row in enumerate(range(ws.nrows)):
for j, col in enumerate(range(ws.ncols)):
if str(word) in str(ws.cell_value(i, j)):
l.append((file,row,col))
if l:
print ('Word %s found %d times in:' %(word,len(l)))
for fn, row, col in l:
print ('File: %s, row: %s ,column: %s' %(fn,row,col))
else:
print ('Word %s not found' %word)
if __name__ == "__main__":
try:
find (sys.argv[1],sys.argv[2])
except IndexError:
print('\tExecute: python searchpy <path> <word>')
print('\tEg: python searchpy /home/user/files/ Fox')
आप गितुब से खींच सकते हैं: searb-इन-xlsx