Localice rutas de archivo largas en una unidad externa con terminal

Necesito mover un gran volumen a un nuevo servidor raid que esté formateado para PC. Sin embargo, tengo un par de rutas y nombres de archivo que interrumpen este proceso.

Solo me gustaría saber cómo usar la terminal para:

  1. Ubique la unidad externa de destino
  2. Luego busque en esa unidad rutas/archivos que tengan más de 130 caracteres

¿Alguien puede ayudar?

Sé cómo buscar rutas largas y encontrar " . -type f -name '?????...*' ", pero no estoy seguro de cómo apuntar a mi disco externo.

Respuestas (2)

La unidad externa está montada debajo /Volumes, ejecute ls /Volumespara ver el nombre exacto.

Después puedes usar

find /Volumes/NAME-FROM-ABOVE -print |
    while read line; do [[ ${#line} -gt 130 ]] && echo $line; done

para enumerar todos los archivos donde la ruta y el nombre de archivo combinados tienen más de 130 caracteres.

PD: Esto no funcionará para nombres de archivos/ruta que contengan nuevas líneas y cosas similares (lo que generalmente no es un problema) PPS: Si el nombre de su volumen contiene espacios, debe envolverlo ""->find "/Volumes/LaCie - BRYT" -print ...

Entonces, mi volumen al que quiero apuntar es 'LaCie - BRYT', pero creo que el nombre del volumen está interfiriendo con mi impresión. Obtengo un retorno de "principal u operador desconocido".
Ver editar. Pero vaya con la solución de Allan para todo, es mucho mejor, un poco más rápido y también funcionará para casos extremos como nombres de archivos con caracteres de nueva línea.
¡Ok lo tengo! Pude ejecutar find "/Volumes/LaCie - BYRT" -print | mientras lee la línea; hacer [[ ${#linea} -gt 130 ]] && echo $linea; hecho Que imprimió mucho. ¡¡Gracias chicos!!

El siguiente comando imprimirá todos los archivos que tengan más de 130 caracteres

find -E . -type f -regex '.*[^/]{130}'

El comando Terminal (bash) para enumerar los discos conectados al sistema es diskutil. El comando diskutil listgenerará todos los discos; simplemente seleccione el identificador que coincida con su dispositivo externo.

Por ejemplo:

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:                  Apple_HFS FreeAgent Go            499.8 GB   disk3s2
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2:                  Apple_HFS My Passport for Mac     999.8 GB   disk4s2

disk0, disk1y disk2están en un volumen CoreStorage. disk3y disk4son mis drivers externos

Para acceder a la unidad (suponiendo que esté montada), busque en el /Volumesdirectorio el punto de montaje adecuado.

Suponiendo que quisiera buscar "My Passport for Mac", ingresaría el comando:

find -E /Volumes/My\ Passport\ for\ Mac/ -type f -regex '.*[^/]{130}'
Lamentablemente, el estándar findno es compatible -regextype.
@patrix: tiene razón... Estoy en una sesión de ssh en una máquina diferente, así que, por supuesto, cuando lo probé, funcionó. Duh...
Pero -Efunciona -> find -E . -type f -regex '.*[^/]{130}':-)
Estaba leyendo la página de manual -Ecuando llegó tu comentario. Desafortunadamente, no tengo ningún archivo tan largo para probarlo realmente . ¡Gracias!
Entonces, si mi identificador es "disk3s2", ¿cómo lo escribiría (lo siento, muy novato).
Así: 'find -disk3s2 . escriba f -regex '.*[^/]{130}'
Para aclarar, ¿quiere encontrar todos los archivos en un disco externo de más de 130 caracteres? ¿Es eso correcto?
si, ese es mi objetivo. el nombre de la inmersión es LaCie - BIRK y creo que está interfiriendo con el comando. Pero podría estar equivocado, soy demasiado nuevo para saberlo.