J'utilise mingw.
$ sed -i "s/a/b/" test.txt
sed: preserving permissions for `./sed003480': Permission denied
Je peux toucher les fichiers/rm dans le répertoire actuel.
Cela est dû aux paramètres de sécurité de Windows.
Ouvrez les paramètres Propriétés du dossier dans le menu contextuel. Dans l'onglet Sécurité, cliquez sur Modifier , appuyez sur Ajouter ... dans dans la fenêtre contextuelle et ajoutez votre utilisateur à la liste, cochez Contrôle total dans la colonne Autoriser . Appuyez sur [~ # ~] ok [~ # ~] deux fois pour appliquer les modifications.
Pour moi, le dossier était en lecture seule. décocher l'option lecture seule résout mon problème. Merci au commentaire Zenadix
Sur Windows 10 WSL, j'ai eu un problème similaire. Le problème était dû au fait que le code VS était ouvert et apparemment à l'aide du fichier. La fermeture du code VS a résolu mon problème.
TL; DR: utilisé Sudo
Dans mon cas, j'exécutais un script bash exécuté sur le sous-système Windows pour Linux (WSL) comme suit:
./generate.sh
Le script a créé un tas de fichiers cependant, pour des raisons inconnues, sed s'est vu refuser l'autorisation de modifier les autorisations sur ces fichiers pour une raison quelconque:
La commande sed réelle a été utilisée pour effectuer un remplacement de recherche qui ressemblait un peu à ceci:
grep -rl $PATTERN $PUBLIC_API_FOLDER/ \
| xargs sed -i 's/$PATTERN/$REPLACE/g'
Comme vous pouvez le voir, bien que n'ayant à aucun moment des privilèges élevés, je n'ai pas pu modifier les fichiers créés par le script:
sed: preserving permissions for ‘public_api/models/sedt0qk4D’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedOxoc1O’: Operation not permitted
sed: cannot rename public_api/models/sedOxoc1O: Permission denied
sed: preserving permissions for ‘public_api/controllers/sedx5BafW’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedVkdqzc’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedLvyS3s’: Operation not permitted
sed: cannot rename public_api/models/sedLvyS3s: Permission denied
sed: preserving permissions for ‘public_api/controllers/sedE7GSe8’: Operation not permitted
sed: cannot rename public_api/controllers/sedE7GSe8: Permission denied
sed: preserving permissions for ‘public_api/controllers/sednHZBQf’: Operation not permitted
sed: cannot rename public_api/controllers/sednHZBQf: Permission denied
La solution dans mon cas était d'exécuter simplement le script avec Sudo.
Sudo ./generate.sh