Sziasztok,
Több száz, tömörített (gz, 7z, rar, stb.) és sima szöveg fájlt kellene átvizsgálnom rendszeresen, elemezni stb, de nem szeretném mindig kibontani őket. (Ubuntu alatt)
Tudtok olyan megoldásról ami grep és ennek megfelel?
zgrep-et próbáltam, de nem kezel 7z, és rar-t.
Szeretném elkerülni a keressek fájlokat és kibontom és utána grep megoldásokat.
- 224 megtekintés
Hozzászólások
>> Szeretném elkerülni a keressek fájlokat és kibontom és utána grep megoldásokat.
miért, a zgrep/bzgrep/xzgrep/... wrapper scriptek szerinted mit csinálnak?
- A hozzászóláshoz be kell jelentkezni
Gondolom van olyan módszer, ami röptében RAM-ba kicsomagolja az adatot, és ott greppeli blokkosan, nem pedig az egészet diszkre kicsomagolás után greppel. Egyik előnye h. nem foglal diszk helyet, cserébe minden keresésnél ki kell tömöríteni az adatot így sok ismétlés esetén lassabb. Másik módszernél viszont le kell tárolni diszkre a kitömörítetlen adatot mielőtt keresni lehetne benne. Cserébe a sokadik keresésnél már nem kell ismételten kitömöríteni az adatot, csak a grep-nek kell dolgoznia.
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy ezt, de nem nekem kell ezzel foglalkozni és a tömörítés típusát is figyelni.
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy ezt, de nem nekem kell ezzel foglalkozni és a tömörítés típusát is figyelni.
- A hozzászóláshoz be kell jelentkezni
A tömörítvényekben egy, vagy több fájl van?
Amúgy tippem szerint egy jól megírt shell-script pont a szükséges STDOUT-ra dekompresszort hívja meg és PIPE-on (azaz memórián) keresztül odaadja a grep-nek. De hogy kissé erősen zabálja a CPU-t, háááát - a fene tudja.
Tegyük fel nem bonyolítod opciókkal, csal simán 'decompgrep "minta" fájlok' formában akarod meghívni - ekkor kb. ennyi, megfelelően kiegészítve az összes elérhető tömörítővel (pack / compress / gzip / (un)zip / lha / (un)arj / un(arj) / .... )
minta="$1" ; shift
case i # ez a maradék paramétereken megy végig
*.gz ) gzip -dc "$i" ;;
*.rar) unrar p "$i" ;;
*.arj) unarj # NO ÉN NEM TALÁLTAM STDOUT-ra opciót - nem OK
*.7z) 7z e -bd -so "$i" ;;
*.zip ) unzip -p "$i" ;;
*) cat "$i" ;;
esac | grep "$minta"
- A hozzászóláshoz be kell jelentkezni
find $sourceDir -type f -print0 | while IFS= read -r -d '' file; do
ext=${file##*.}
echo "Scan:" $file " extension is:" $ext
echo $file >> scanned_files.log
case $ext in
(txt) cat "$file" | grep $PT -oE >> scan_log.txt;;
(rar) unrar p "$file" | grep $PT -oE >> scan_log.txt;;
(zip) unzip -p "$file" | grep $PT -oE >> scan_log.txt;;
(7z) 7z e -bd -so "$file" | grep $PT -oE >> scan_log.txt;;
(gz) gzip -dc "$file" | grep $PT -oE >> scan_log.txt;;
(*) echo "# ERROR -- $file" >> not_scanned_files.log;;
esac
done
Most jelenleg ez lett a "megoldás". Kicseréltem 1-2 csomagolási paramétert Zahy megoldása alapján.
De pl rar otthagyja a kicsomagolt fájlokat.
- A hozzászóláshoz be kell jelentkezni