GNU/Linux >> Znalost Linux >  >> Linux

Hledání spustitelných souborů pomocí ls a grep

Pokud bezpodmínečně musíte použít ls a grep, funguje to:

ls -Fla | grep '^\S*x\S*'

Odpovídá řádkům, kde první slovo (bez mezer) obsahuje alespoň jedno 'x'.

Najít je k tomu ideální nástroj. To najde všechny soubory (-type f), které jsou spustitelné:

find . -type f -executable

Pokud nechcete, aby rekurzivně vypisoval všechny spustitelné soubory, použijte maxdepth:

find . -maxdepth 1 -type f -executable

Potřebujete použít ls? K tomu můžete použít find:

find . -maxdepth 1 -perm -111 -type f

vrátí všechny spustitelné soubory v aktuálním adresáři. Chcete-li procházet všemi podřízenými adresáři, odstraňte příznak -maxdepth.

Můžete zkusit tuto příšernost, ale může se shodovat se soubory, které obsahují řetězce, které vypadají jako oprávnění.

ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"

Možná s testem -x?

for f in $(\ls) ; do test -x $f && echo $f ; done

\ on ls obejde aliasy shellu.


for i in `ls -l | awk '{ if ( $1 ~ /x/ ) {print $NF}}'`; do echo `pwd`/$i; done

Tím získáte absolutní cesty ke spustitelným souborům.


Linux
  1. Jak najít více řetězců v souborech?

  2. Najděte a zkopírujte soubory

  3. Odstranění souborů pomocí rm pomocí find a xargs

  1. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  2. Jak přejmenovat více souborů pomocí funkce Najít?

  3. Hledání poslední položky v řadě pomocí Grepu?

  1. Pomocí grep vyhledejte obsah v souborech a přesuňte je, pokud se shodují

  2. Použití grep a sed k nalezení a nahrazení řetězce

  3. najít a odstranit soubory s mezerou pomocí příkazu find v Linuxu