0 votos

Permisos de la carpeta de inicio de Mac Big Sur: Sistema de archivos de sólo lectura al renombrar archivos

ACTUALIZACIÓN #2

Pude renombrar con éxito los archivos usando sed:

for f in *.Rdat; do mv $f $(echo $f | sed "s/PCC-//"); done

ACTUALIZACIÓN He descubierto que puedo renombrar archivos individuales:

mv 'PCC-ASR-L.Rdat' 'ASR-L.Rdat'

Así que, evidentemente, el problema se produce sólo cuando se intenta renombrar por lotes en un for loop . Todavía me gustaría entender por qué.

POST ORIGINAL

Después de actualizar a Big Sur de Catalina Intenté usar la terminal para cambiar el nombre de algunos archivos en una subcarpeta de mi Home carpeta. Había creado y utilizado la subcarpeta antes de la actualización. En concreto, intenté cambiar el nombre de un grupo de Rdat archivos utilizando un bash for loop . Podría hacer esto bajo Catalina, pero ahora me sale un error . Aquí, estoy tratando de reemplazar 'PCC-' en cada nombre de archivo con una cadena vacía (es decir. '' ):

for f in *.Rdat; do mv $f ${f/PCC-//}; done

Esto produce un error para cada archivo, así (para el archivo PCC-ASR-H.Rdat ):

mv: /ASR-H.Rdat: Read-only file system

Esto parece extraño porque como propietario de la carpeta tengo write permissions :

drwxr-xr-x    8 mike  staff   256 Nov 21 15:04 Rdatafiles

Y tengo write permissions para los archivos de la carpeta (ejemplo):

-rw-rw-r--@ 1 mike  staff  10926 Dec  4 18:26 PCC-ASR-H.Rdat

He probado a desactivar SIP en Recovery Mode :

csrutil disable

Pero el problema persiste. ¿Es posible hacer que las subcarpetas de la carpeta de inicio se puedan escribir en Big Sur ? ¿Hay algún cambio adicional que deba hacer en el sistema (por ejemplo permissions ) para permitir el acceso de escritura? ¿O tengo que mover mis archivos de trabajo fuera de Home y en, digamos, Home/Documents ¿para evitar este problema?

1voto

Nate Puntos 220

El problema es la doble barra diagonal en ${f/PCC-//} . A diferencia de un patrón de sustitución sed, no hay / al final del patrón de sustitución (se termina con } ), por lo que el extra / se toma como cadena de sustitución. Esto convierte, por ejemplo, "PCC-ASR-L.Rdat" en "/ASR-L.Rdat", que (debido a la "/") está en root del sistema de archivos... que es de sólo lectura.

Cuando hago cosas como renombrar lotes, a menudo no lo hago todo bien en el primer intento, así que tiendo a hacer una prueba con echo frente a la mv (o cp o rm o...), para poder ver lo que va a pasar antes de ejecutarlo. También fuertemente recomiendan el uso de mv -i o mv -f para que si hay algún tipo de conflicto de nombres no se sobrescriban los archivos de forma silenciosa e irreversible. Además, poner comillas dobles alrededor de las referencias a las variables es una buena idea, en caso de que algún nombre de archivo contenga caracteres extraños.

Así que mi prueba en seco sería algo así:

for f in *.Rdat; do echo mv -i "$f" "${f/PCC-/}"; done

...y si se viera bien, le daría a la flecha arriba para recuperarlo, borraría el "eco" y lo volvería a ejecutar de verdad.

Si necesita solucionar los problemas con más detalle, el uso de set -x antes del comando mostrará lo que el shell cree que está sucediendo (es decir, cómo se ve el comando después de realizar las sustituciones) en casos como éste.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X