¿Cómo puedo hacer que grep trabaje con "->" como patrón?

Tengo este text en un file llamado temp :

 -rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-copy -rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-link -rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-move -rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-none -rw-r--r-- 1 root root 15776 Oct 15 2010 dotbox lrwxrwxrwx 1 root root 5 Oct 8 2012 cross_reverse -> cross lrwxrwxrwx 1 root root 5 Oct 8 2012 diamond_cross -> cross lrwxrwxrwx 1 root root 6 Oct 8 2012 dot_box_mask -> dotbox lrwxrwxrwx 1 root root 17 Oct 8 2012 double_arrow -> sb_v_double_arrow lrwxrwxrwx 1 root root 9 Oct 8 2012 draft_large -> right_ptr 

Si ejecuto egrep -v 'lrwx' temp , se eliminan las últimas cinco líneas.

Esperaba que ejecutar egrep -v '->' temp eliminaría las mismas cinco líneas porque lrwx y -> ocurren en la misma línea.

Sin embargo, me sale este error:

 [09:43 PM] ~/Desktop $ egrep -v '->' temp egrep: invalid option -- '>' Usage: egrep [OPTION]... PATTERN [FILE]... Try 'egrep --help' for more information. 

Probar egrep -v '-\>' temp tampoco ayuda:

 [09:46 PM] ~/Desktop $ egrep -v '-\>' temp egrep: invalid option -- '\' Usage: egrep [OPTION]... PATTERN [FILE]... Try 'egrep --help' for more information. 

(Obtengo los mismos resultados con egrep o grep -E .)

-> está siendo interpretado como una opción que grep debería interpretar para su propio uso debido a la dirección - . Hay dos methods que puedes usar:

 grep -- '->' # Explicitly declare end of arguments using -- grep '\->' # Escape -, which still evaluates to -. 

Para el logging, el análisis ls es una mala forma de encontrar enlaces simbólicos que pueden conducir fácilmente a falsos positivos o datos truncados, especialmente si vas a tratar de analizar esto más detenidamente. Algo así sería mejor (en bash):

 shopt -s nullglob for file in *; do [[ -h $file ]] || continue printf '%s -> %s\n' "$file" "$(readlink "$file")" done