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
-E
bandera 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-egrep
y-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 *.pdf
y no.*[pdf|png]
.Tu expresión regular coincidirá
.Apdf
,.Zpng
etc.Puedes probar esto:
find . -type f | egrep '.pdf$|.png$'
fuente
Esto debería adaptarse a:
Si su versión de
find
no conoce-regextype posix-egrep
, puede probar esto, en su lugar:fuente