Chciałbym znaleźć pliki czytelne dla człowieka na moim komputerze z systemem Linux bez ograniczenia pliku rozszerzenia. Pliki te powinny zawierać ludzkie pliki, takie jak tekst, konfiguracja, html, kod źródłowy itp. Czy możesz zaproponować sposób filtrowania i lokalizowania.Znajdowanie plików czytelnych dla człowieka na unixie
Odpowiedz
znaleźć i plik są twoi przyjaciele tutaj:
find /dir/to/search -type f -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
ten znajdzie żadnych plików (uwaga: to nie znajdzie Symlinks katalogów gniazdek itp tylko zwykłe pliki) w/dir/do/search and run sh - c 'plik -b {} | grep text &>/dev/null '\; który patrzy na typ pliku i szuka tekstu w opisie. jeśli to zwróci true (tzn. tekst znajduje się w wierszu), to drukuje nazwę pliku.
UWAGA: użycie opcji -b w filemeans powoduje, że nazwa pliku nie jest drukowana i dlatego nie może powodować problemów z grep. np. bez opcji -b plik binarny gettext został błędnie wykryty jako plik tekstowy.
np
[email protected]# find /bin -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
/bin/gunzip
/bin/svnshell.sh
/bin/unicode_stop
/bin/unicode_start
/bin/zcat
/bin/redhat_lsb_init
[email protected]# find /bin -type f -name *text*
/bin/gettext
EDIT:
Jeśli chcesz szukać w plikach skompresowanych użyć --uncompress flagę do pliku. aby uzyskać więcej informacji i flagi złożyć zobaczyć man file
Jestem nowy w ekosystemie uniksopodobnym. Dlaczego używasz "&" na końcu twojego 'grep'? Rozumiem, że to spowoduje, że grep będzie działał asynchronicznie. Czy to nadal daje status wyjścia do 'find'? Dlaczego miałbyś to robić? Dziękuję za poświęcenie czasu na odpowiedź. –
Jak o
find /dir/to/search -type f | xargs file | grep text
find
daje listę plików.
xargs file
uruchomi komendę file
dla każdej linii z potokowego wejścia.
Działa idealnie!Ładne rozwiązanie. – fuuman
używam
file directory/to/search/*
Na przykład, aby znaleźć tylko człowiekiem plików czytelny w katalogu o nazwie użytku domowego:
file home/*
i pliku czytelnego będą miały formatu takich jak tekst ASCII
Nie zapewnia metody filtrowania pliku poza ręcznym skanowaniem w poszukiwaniu typów plików. – blissfool
- 1. Znajdowanie plików zrzutu awaryjnego dla aplikacji C#
- 2. Formatowanie daty na czytelny dla człowieka format
- 3. Konwertuj mikrosekundy na czas czytelny dla człowieka
- 4. Konwertowanie człowieka na 3d
- 5. Czy należy używać system_category lub generic_category dla errno na Unixie?
- 6. Lista czytelnych identyfikatorów wiadomości typu pylint dla ludzi?
- 7. co jest zwykłym plikiem na unixie
- 8. Serialize w czytelnym dla człowieka formacie tekstowym
- 9. Jak przekonwertować znacznik czasu unixa na czas czytelny dla człowieka?
- 10. JavaScript Konwersja czasu dla człowieka na sygnaturę czasową
- 11. Konwersja znacznika czasu Epoki na serwer sql (czytelny dla człowieka)
- 12. Konwertuj łańcuch oktetów snmp na format daty czytelnej dla człowieka
- 13. Reprezentacje czytelne dla człowieka w protobuf-net
- 14. Jak wyświetlić czytelne dla człowieka "czas temu"
- 15. Cron do czytelnego dla człowieka ciągu
- 16. Wyjście htop do pliku czytelnego dla człowieka
- 17. Utworzyć twardy link z uchwytu pliku na Unixie?
- 18. Znajdowanie plików i folderów w pakiecie OSGI
- 19. PLCrashReporter: Tworzenie czytelnej dla człowieka ścieżki stosu
- 20. kody błędów doładowania czytelny dla człowieka opis
- 21. jak zmniejszyć timeout na unixie telnet na połączeniu
- 22. Jak policzyć wszystkie czytelne dla człowieka pliki w Bash?
- 23. Szyny: Przyjazny dla człowieka format daty dla pola tekstowego
- 24. Znajdowanie podobrazów na obrazku
- 25. Znajdowanie wzorców na liście
- 26. Adres IP w C++ czytelny dla człowieka formularz
- 27. Lewe sprzężenie zewnętrzne na dwóch plikach w unixie
- 28. Znajdowanie nietypowych elementów na listach
- 29. Object-c NSFilePosixPermissions do czytelnego dla człowieka NSString
- 30. Wydrukuj czas w formacie czytelnym dla człowieka przez EL
Narzędzie 'file' jest całkiem niezłe przy określaniu typu zawartości w pliku. Być może mógłbyś użyć tego i filtrować pliki na podstawie ich danych wyjściowych. – cdhowie
Tylko system AFAIK System Windows ufa rozszerzeniu pliku. Systemy OSIX-podobne używają 'file'. W każdym razie musisz zdefiniować "czytelny dla człowieka". – m0skit0
Jak dokładnie to musi być? Czy szukasz KAŻDEGO pliku w systemie, czy tylko w wybranej części systemu? Co się stanie, jeśli system ma przydzielone terabajty dysków, czy można odczekać kilka godzin (ponieważ tyle czasu zajmuje odczytanie wszystkich plików)? –