Necesito archivos que terminen en ".pdf" o ".png"; Aquí está mi intento:
find /Users/robottinosino/Desktop/_PublishMe_ -type f -regex '.*[pdf|png]'
esto incluye incorrectamente archivos que terminan en "Apdf", "Zpdf", etc. (falta un punto literal antes de la extensión del archivo)
Traté de ajustar el patrón para:
find /Users/robottinosino/Desktop/_PublishMe_ -type f -regex '.*\.[pdf|png]'
pero luego no se devuelven resultados. Escapando de la. con una barra invertida no funciona. ¿Por qué?
[0] $ uname -a
Darwin Robottinosino.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386
¡Gracias!

Respuestas:
El problema no es el punto. Son los corchetes. Los corchetes definen una clase de caracteres; Estoy bastante seguro de que lo que intentas hacer es agrupar una alternancia. Para eso, necesita corchetes redondos. Necesita usar una expresión regular extendida para eso, y entonces el comando es:
Esa
-Ebandera es un BSDism (OS X tiene una tierra de usuarios en gran medida BSD). En GNU find, usted dice-regextype posix-extended, en cambio , como una expresión en lugar de una bandera (según el comentario de Dennis Williamson , que sin duda es correcto).fuente
|, así que no entendí eso. Mi error. Eliminaré esa sugerencia.En su lugar, podría usar algo como, a
\( -name '*.pdf' -or -name '*.png' \)menos que tenga otra razón para combinar con una expresión regular.fuente
-or.El patrón
[pdf|png]coincide con cualquier uno de los caracteres dentro de los corchetes (incluyendo la tubería).Prueba esto:
fuente
find(find (GNU findutils) 4.4.2) en mi sistema no tiene-E. Tiene-regextype posix-egrepy-regextype posix-extended(tambiénposix-awk) que funcionan sin escapar de los paréntesis y la tubería./Users/...absolutamente grita Mac.fuente
Deberías estar usando
-name *.pdfy no.*[pdf|png].Tu expresión regular coincidirá
.Apdf,.Zpngetc.Puedes probar esto:
find . -type f | egrep '.pdf$|.png$'fuente
Esto debería adaptarse a:
Si su versión de
findno conoce-regextype posix-egrep, puede probar esto, en su lugar:fuente