phone opposite name antonyms find

find - opposite - predicados de agrupación en encontrar



find-name unix (3)

El "-o" significa OR. Es decir, el nombre debe terminar en "txt" o "html". Los corchetes solo agrupan las dos condiciones juntas.

Esta parte "(-name * txt -o -name * html)" me confunde en el código:

find $HOME /( -name /*txt -o -name /*html /) -print0 | xargs -0 grep -li vpn

¿Alguien puede explicar los corchetes y "-o"? ¿Es "-o" un comando o un parámetro? Sé que los corchetes se escapan por "/", pero ¿para qué sirven?


El (y) proporcionan una forma de agrupar los parámetros de búsqueda para el comando de búsqueda. El -o es un operador "o".

Este comando find encontrará todos los archivos que terminen en "txt" o "html" y los pasará como argumentos al comando grep.


Por defecto, las condiciones en la lista de argumentos de búsqueda se ''juntan''. La opción -o significa ''o''.

Si usted escribió:

find $HOME -name /*txt -o -name /*html -print0

entonces no hay una acción de salida asociada con los nombres de los archivos que terminan con ''txt'', por lo que no se imprimirían. Al agrupar las opciones de nombre entre paréntesis, obtienes los archivos ''html'' y ''txt''.

Considera el ejemplo:

mkdir test-find cd test-find cp /dev/null file.txt cp /dev/null file.html

Los comentarios a continuación tienen una luz lateral interesante sobre esto. Si el comando fue:

find . -name ''*.txt'' -o -name ''*.html''

luego, dado que no se especifica ninguna acción explícita para ninguna alternativa, la acción predeterminada -print (no -print0 !) se usa para ambas alternativas y ambos archivos se enumeran. Con una -print u otra acción explícita después de una de las alternativas (pero no del otro), solo la alternativa con la acción entra en vigencia.

find . -name ''*.txt'' -print -o -name ''*.html''

Esto también sugiere que podría tener diferentes acciones para las diferentes alternativas. También puede aplicar otras condiciones, como una hora de modificación:

find . /( -name ''*.txt'' -o -name ''*.html'' /) -mtime +5 -print0 find . /( -name ''*.txt'' -mtime +5 -o -name ''*.html'' /) -print0

La primera imprime archivos txt o html anteriores a 5 días (por lo que no imprime nada para el directorio de ejemplo; los archivos tienen algunos segundos de antigüedad); el segundo imprime archivos txt anteriores a 5 días o archivos html de cualquier edad (tan solo file.html). Y así...

Gracias a DevSolar por sus comentarios que llevaron a esta adición.