Encuentre múltiples archivos a la vez a través de Terminal

Tengo una lista de nombres de archivo como esta:

P1020804.JPG
P1020805.JPG
P1020806.JPG
P1020807.JPG
P1020808.JPG

¿Cómo encontrarlos mejor con una sola consulta en Spotlight, Terminal, mdfind o localizar?

¿Están todos en el mismo directorio (carpeta)?

Respuestas (3)

Asumiré que su lista es solo una lista representativa y que los nombres de archivo siguen ese patrón y en realidad pueden ser más que esos nombres de archivo exactos. Por lo tanto, se utilizará el uso de una expresión regular extendida para encontrar los archivos que coincidan con el patrón que se muestra en los nombres de archivo de ejemplo en su OP.

find -E . -regex '.*\/P[0-9]{7}\.JPG'
  • -EInterprete las expresiones regulares seguidas de -regexy -iregexprimarias como expresiones regulares extendidas (modernas) en lugar de expresiones regulares básicas (BRE). La re_format(7)página del manual describe completamente ambos formatos.
  • .Busca en el directorio actual y sus subdirectorios.
  • -regex patternVerdadero si toda la ruta del archivo coincide con el patrón usando una expresión regular.
  • .*\/P[0-9]{7}\.JPG
    • .*coincide con cualquier carácter (excepto los terminadores de línea).
    • *Cuantificador: coincidencias entre cero y un número ilimitado de veces, tantas veces como sea posible, devolviendo según sea necesario (codicioso).
    • \/coincide con el carácter /literalmente (sensible a mayúsculas y minúsculas).
    • P coincide con el carácter Pliteralmente (sensible a mayúsculas y minúsculas).
    • [0-9]coincidir con un solo carácter presente en la lista.
    • {7}Cuantificador: coincide exactamente 7 veces, 0-9un solo carácter en el rango entre 0(índice 48) y 9(índice 57) (se distingue entre mayúsculas y minúsculas).
    • \.coincide con el carácter .literalmente (sensible a mayúsculas y minúsculas).
    • JPG coincide con los caracteres JPGliteralmente (sensible a mayúsculas y minúsculas).

$ find -E . -regex '.*\/P[0-9]{7}\.JPG'
./Pictures/P1020799.JPG
./Pictures/P1020800.JPG
./Pictures/P1020801.JPG
./Pictures/P1020802.JPG
./Pictures/P1020803.JPG
./Pictures/P1020804.JPG
./Pictures/P1020805.JPG
./Pictures/P1020806.JPG
./Pictures/P1020807.JPG
./Pictures/P1020808.JPG
./Pictures/P1020809.JPG
./Pictures/P1020810.JPG
$

Nota: El .es el directorio de trabajo actual, que de forma predeterminada, si acaba de abrir Terminal, será su directorio de inicio. Si los archivos están en otro lugar, puede usar una ruta de inicio diferente, por ejemplo, /comenzará en la raíz de Macintosh HD (asumiendo el nombre predeterminado). Como puede ver en el resultado del ejemplo, los nombres de archivo de destino encontrados por el patrón de expresiones regulares estaban en mi carpeta Imágenes.

Prueba esto:

find . -name 'P1020804.JPG' -o -name 'P1020805.JPG' -o -name 'P1020806.JPG'

Recuerda que .es necesario.

find . \( -name P1020804.JPG -o \
          -name P1020805.JPG -o \
          -name P1020806.JPG -o \
          -name P1020807.JPG -o \
          -name P1020808.JPG \)

find.en el directorio y subdirectorios actuales , el nombre del archivo o el siguiente nombre de archivo... y así sucesivamente.