GNU/Linux >> Znalost Linux >  >> Linux

vypsat/najít všechny běžné soubory ve všech podadresářích s výjimkou binárních souborů

file /usr/bin/file , například nezahrnuje slovo "binární" ve svém výstupu v mém systému. Pokud file -i je k dispozici, obsahuje slovo „binární“. Bez -i , může být spolehlivější otestovat přítomnost slova „text“.

find -type f -exec sh -c "file {} | grep text >/dev/null" \; -print

nebo

find -type f -exec sh -c "file {} | grep text >/dev/null" \; -ls

Pomocí -i :

find -type f -exec sh -c "file -i {} | grep -v binary >/dev/null" \; -print

Pomocí file bude pouze přiblížením, protože k určení typu souboru používá heuristiku a neexistuje žádná pevná a rychlá definice toho, co tvoří „binární“ soubor. Je prázdný soubor "binární"? file říká, že je. Existuje také mnoho (obvykle neobvyklých) způsobů, jak spustit falešně pozitivní ID pomocí file .


Dalším způsobem by bylo vyloučit všechny soubory, které mají nastaveno oprávnění ke spuštění pro uživatele, skupinu nebo jiné:

find . -type f ! -perm /u=x,g=x,o=x

(Pokud se binární rovná oprávnění ke spuštění...)


Linux
  1. Smazat všechny soubory v adresáři, jejichž jméno neodpovídá řádku v seznamu souborů?

  2. Získat seznam všech souborů podle masky v terminálu?

  3. Rekurzivně vypisujte všechny soubory v adresáři včetně souborů v adresářích symbolických odkazů

  1. Jak rekurzivně vypsat všechny soubory a adresáře

  2. symbolický odkaz:najít všechny soubory, které odkazují na tento soubor

  3. Hledání souborů čitelných pro člověka na unixu

  1. Vyloučit seznam souborů z hledání

  2. Odstraňte odpovídající soubory ve všech podadresářích

  3. Jak mohu upravit všechny soubory vrácené funkcí find in vi v systému Linux?