Użyj znaku wieloznacznego powłoki LUB z diskutil

0

Mam następujące polecenie terminala, które pasuje do woluminów o nazwach A001R45R, A123R45R itp.

diskutil eraseVolume HFS+ FreshMag /Volumes/*R45R

Ale chcę też, aby pasowała do woluminów o nazwach B001R4G5, B150R4G5 itp. Jak mogę użyć wyrażenia OR w symbolu wieloznacznym? Próbowałem następujące, ale to nie działa:

$ diskutil eraseVolume HFS+ FreshMag /Volumes/{*R45R,*R4G5}
The third parameter does not appear to be "bootable" or "nonbootable"
$ diskutil eraseVolume HFS+ FreshMag /Volumes/"{*R45R,*R4G5}"
Unable to find disk for /Volumes/{*R45R,*R4G5}

Używam bash.

Elliott
źródło
Czy masz inne tomy, które zawierają R4pośrodku ich nazwy? Jeśli nie, możesz użyć:diskutil eraseVolume HFS+ FreshMag /Volumes/*R4*
Mateusz Szlosek
Twoja powłoka dokonuje tutaj rozbudowy - powinieneś wyjaśnić, której powłoki używasz.
Alex,
Mateusz, to mi nie zadziała. To były tylko dwa przykłady, ale mam inne, które nie udostępniają postaci. Używam bash.
Elliott,

Odpowiedzi:

0

Sam wymyśliłem odpowiedź. Najwyraźniej wersja bash w OS X obsługuje nawiasy kwadratowe, ale nie nawiasy klamrowe. Dziwne. To bash 3.2.53. To polecenie działa:

diskutil eraseVolume HFS+ FreshMag /Volumes/*[R45R,R4G5]

Jednak w tym konkretnym przypadku lepiej jest użyć bardziej szczegółowego polecenia, takiego jak to:

diskutil eraseVolume HFS+ FreshMag /Volumes/[A-Z][0-9][0-9][0-9][R,L]???

Należy zauważyć, że jeśli więcej niż jeden wolumin pasuje do tego symbolu wieloznacznego, polecenie zakończy się niepowodzeniem, ponieważ symbol wieloznaczny rozwija się do obu nazw plików.

Elliott
źródło