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

0

Tengo una lista de nombres de archivo como este:

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

¿Cuál es la mejor forma de encontrarlos todos en una sola consulta en Spotlight, Terminal, mdfind o localizar?

    
pregunta junna 05.07.2017 - 22:49

3 respuestas

3

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

find -E . -regex '.*\/P[0-9]{7}\.JPG'
  • -E Interpreta expresiones regulares seguidas de primarias -regex y -iregex como expresiones regulares extendidas (modernas) en lugar de expresiones regulares básicas (BRE). La página del manual de re_format(7) describe ambos formatos.
  • . busca en el directorio actual y sus subdirectorios.
  • -regex pattern Verdadero si la ruta completa del archivo coincide con el patrón usando una expresión regular.
  • %código%
    • .*\/P[0-9]{7}\.JPG coincide con cualquier carácter (excepto los terminadores de línea).
    • .* Quantifier: coincide entre cero y tiempos ilimitados, tantas veces como sea posible, devolviendo según sea necesario (codicioso).
    • * coincide con el carácter \/ literalmente (distingue entre mayúsculas y minúsculas).
    • P coincide con el carácter / literalmente (distingue entre mayúsculas y minúsculas).
    • P coincide con un solo carácter presente en la lista.
    • [0-9] Quantifier: hace coincidir exactamente 7 veces, {7} un solo carácter en el rango entre 0-9 (índice 48) y 0 (índice 57) (distingue entre mayúsculas y minúsculas).
    • 9 coincide con el carácter \. literalmente (distingue entre mayúsculas y minúsculas).
    • JPG hace coincidir los caracteres . literalmente (distingue entre 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: JPG es el directorio de trabajo actual, que de manera 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. . se iniciará en la raíz de Macintosh HD, (asumiendo el nombre predeterminado). Como puede ver en la salida de ejemplo, los nombres de archivo de destino encontrados por regex pattern estaban en la carpeta de Imágenes.

    
respondido por el user3439894 06.07.2017 - 06:30
1

Prueba esto:

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

Recuerda que . es necesario.

    
respondido por el user243793 05.07.2017 - 23:25
1
find . \( -name P1020804.JPG -o \
          -name P1020805.JPG -o \
          -name P1020806.JPG -o \
          -name P1020807.JPG -o \
          -name P1020808.JPG \)

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

    
respondido por el fd0 05.07.2017 - 23:34

Lea otras preguntas en las etiquetas