Chciałbym przeskanować dysk twardy w poszukiwaniu wszystkich skompresowanych kolekcji plików, takich jak zip, gzip, bzip i inne, i mieć zawartość tych, które są wyszukiwane dla określonych typów plików (takich jak obrazy). Zrób to antywirusowo, więc uważam, że powinien istnieć sposób.
9
foo
ale niefoo.png
.Odpowiedzi:
Najprostszym podejściem byłoby wylistowanie zawartości archiwum i poszukiwanie plików odpowiedniego rozszerzenia. Na przykład z
zip
plikiem:-sf
Opcja mówizip
do listy plików znajdujących się w archiwum. Następniegrep
szuka a.png
lub.jpg
które znajdują się na końcu linii ($
).-E
Umożliwia rozszerzone wyrażenia regularne, więc możemy użyć|
jako lub i-i
sprawia, że dopasowanie nie uwzględnia wielkości liter.Jednak każde narzędzie do archiwizacji ma inne polecenie do wyświetlenia zawartości. Napisałem skrypt, który poradzi sobie z większością popularnych. Jeśli zapiszesz ten skrypt jako
list_compressed.sh
, możesz uruchomić:To pokazuje najpopularniejsze typy obrazów. Zauważ, że takie podejście zakłada, że typ pliku może być określony przez rozszerzenie pliku. Nie znajdzie plików obrazów, które nie mają rozszerzenia, i nie rozpozna plików z niewłaściwym rozszerzeniem. Nie ma sposobu, aby sobie z tym poradzić bez wyodrębnienia plików z archiwum i uruchomienia
file
na każdym z nich.Jeśli chcesz znaleźć wszystkie archiwa zawierające pliki obrazów na dysku twardym, połącz powyższe z
find
:Polecenie find wyszuka wszystkie
.gz
,.tgz
lub.zip
pliki (można dodać dowolną liczbę rozszerzeń, jak chcesz), te są następnie przekazywane za pośrednictwem mojego skryptu. W-q
Pomija grep normalne wyjście, nic nie zostanie wydrukowany. Wyświetli&& echo
nazwę archiwum tylko wtedy, gdy sięgrep
powiedzie.źródło
-name
na-iname
. Jednak nie ma to większego sensu, wiele programów kompresujących (na przykład gzip) potrzebuje określonego rozszerzenia.GZ
nie zadziała.Nie tak zaawansowany jak terdon, ale spowoduje to:
Zapisz następujący kod w folderze, w którym znajduje się cały kod, as
finda.sh
lub dowolna inna nazwa:Następnie w katalogu, w którym znajdują się wszystkie twoje archiwa, uruchom je, a to jest wynik:
źródło
*.*
będą pasować tylko pliki z rozszerzeniem. Spowoduje to również wyświetlenie listy wszystkich plików we wszystkich archiwach, nie testujesz żadnego typu pliku.