MISE À JOUR #2
J'ai réussi à renommer les fichiers avec succès en utilisant sed:
for f in *.Rdat; do mv $f $(echo $f | sed "s/PCC-//"); done
MISE À JOUR J'ai découvert que je pouvais renommer des fichiers individuellement:
mv 'PCC-ASR-L.Rdat' 'ASR-L.Rdat'
Il semble donc que le problème survient uniquement lorsque j'essaie de renommer en lot dans une boucle for
. Je voudrais toujours comprendre pourquoi.
MESSAGE ORIGINAL
Après la mise à niveau vers Big Sur
depuis Catalina
, j'ai essayé d'utiliser le terminal pour renommer certains fichiers dans un sous-dossier de mon dossier Home
. J'avais créé et utilisé ce sous-dossier avant la mise à niveau. Plus précisément, j'ai essayé de renommer un groupe de fichiers Rdat
en utilisant une boucle for bash
. Je pouvais le faire sous Catalina, mais maintenant j'obtiens une erreur. Ici, j'essaie de remplacer 'PCC-' dans chaque nom de fichier par une chaîne vide (c'est-à-dire ''
):
for f in *.Rdat; do mv $f ${f/PCC-//}; done
Cela génère une erreur pour chaque fichier, comme ceci (pour le fichier PCC-ASR-H.Rdat
):
mv: /ASR-H.Rdat: Système de fichiers en lecture seule
Cela semble étrange car en tant que propriétaire du dossier, j'ai des permissions d'écriture
:
drwxr-xr-x 8 mike staff 256 Nov 21 15:04 Rdatafiles
Et j'ai des permissions d'écriture
pour les fichiers du dossier (exemple):
-rw-rw-r--@ 1 mike staff 10926 Dec 4 18:26 PCC-ASR-H.Rdat
J'ai essayé de désactiver SIP
en Recovery Mode
:
csrutil disable
Mais le problème persiste. Est-il possible de rendre des sous-dossiers du dossier Home
inscriptibles sous Big Sur
? Y a-t-il des changements supplémentaires que je dois apporter au système (c'est-à-dire des permissions
) pour permettre l'accès en écriture? Ou est-ce que je dois maintenant déplacer mes fichiers de travail hors de Home
et dans, par exemple, Home/Documents
, pour éviter ce problème?
0 votes
Le problème est le double slash dans
${f/PCC-//}
. Contrairement à un schéma de substitutionsed
, il n'y a pas de/
à la fin du modèle de remplacement (il est terminé par}
), donc le/
supplémentaire est pris comme chaîne de remplacement. Cela transforme par exemple "PCC-ASR-L.Rdat" en "/ASR-L.Rdat", ce qui (en raison du "/") se trouve à la racine du système de fichiers... qui est en lecture seule. Remarque : l'utilisation deset -x
avant la commande montrera ce qui se passe (c'est-à-dire à quoi ressemble la commande après l'exécution des substitutions) dans des cas comme celui-ci.0 votes
Wow explication impressionnante @GordonDavisson! Si vous pouvez en faire une réponse, je la sélectionnerai comme correcte.
0 votes
Utilisez la fonction de renommage de Finder.