¿Cómo listar todos / dev / disks, no las particiones que terminan en s1, s2, ...?

0

Estoy tratando de listar (enviar) la unidad de su nombre de Mac OS X del número de serie en el shell Bash 3.2 en la línea de comandos. Para esto necesito recorrer todos los dispositivos de bloque que no sean una partición. Así que necesito un mejor reemplazo para este bucle de bash: for disk in /dev/disk*; do …; done

Quiero usar ls solo , eventualmente con un patrón de comodín, sin canalizaciones (a través de grep ) y sin otras utilidades (como find ).

Es como ls /dev/disk* pero no coincide con las particiones que terminan en s1 (como /dev/disk0s1 ), s2 etcétera.

Regresión

Los intentos fallidos:

$ ls /dev/disk[0-9]*[!s][!1-9]
$ ls /dev/disk[0-9]*[!s,!1-9]
$ ls /dev/disk* -d -- *[!s][1-9]
$ ls /dev/disk[0-9]*[!s,1-9]
$ ls /dev/disk[0-9]*[!s]
$ ls /dev/disk[0-9]*[!s][0-9]
$ ls /dev/disk[0-9]*[!s]*
$ ls /dev/disk[0-9]*[!\s1-9]
$ ls /dev/disk[0-9]*[!s1-9]
$ ls /dev/disk[0-9]*([!s1-9])
$ ls /dev/disk[0-9]*[!s]*[0-9]
$ ls /dev/disk[0-9][0-9]
$ ls /dev/disk* --ignore="disk*s?"
$ ls /dev/disk* -I "*s?"
$ ls /dev/disk* -I "*s[1-9]"
$ ls /dev/disk*[!s?]
    
pregunta Pro Backup 03.07.2018 - 12:39

2 respuestas

1

Usando el globo extendido de ksh :

ls /dev/+(disk?|disk??)

para bash tienes que activar glob extendido

shopt -s extglob
ls /dev/+(disk?|disk??)
    
respondido por el fd0 03.07.2018 - 13:12
0
$ ls /dev/disk[0-9]{,[0-9]}
/dev/disk0  /dev/disk11 /dev/disk2  /dev/disk4  /dev/disk6  /dev/disk8
/dev/disk10 /dev/disk12 /dev/disk3  /dev/disk5  /dev/disk7  /dev/disk9
    
respondido por el Pro Backup 03.07.2018 - 12:39

Lea otras preguntas en las etiquetas