Suppression fichier avec caracteres speciaux Le sujet est résolu

Tout ce qui concerne la programmation.
Répondre
sql84
Membre
Membre
Messages : 26
Inscription : 26 oct. 2022, 09:13
Status : Hors-ligne

Bonjour à toutes et tous
je reviens vers ce forum car la dernière fois que j'ai rencontré un problème j'y est trouvé une aide précieuse
je rencontre un souci pour supprimer des fichier sur mon serveur distant
Je connais la commande mais là il s'agit de fichier qui contienne des quot simple et double

Code : Tout sélectionner

'15930_300_tige_'$'\340''_silicone_5_x_0_9cm.jpg'
j'ai essayé en échappant les caractères spéciaux mais a priori sans succès
si quelqu'un connais la solution je suis preneur
par avance merci de votre aide
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Bonjour,

j'ai déplacé ta question dans le forum "pour les codeurs".



Ton problème, c'est que tu voudrais "échapper" tout d'un bloc avec des guillemets simples,
sauf que le nom contient lui-même des guillemets simples donc le 1er et le second s'appairent ainsi que le 3ème et le 4ème, etc...

Dans un tel cas il faut échapper (dans bash) chaque caractère interprétable avec l'anti-slash " \ "

P.ex :

Code : Tout sélectionner

$ touch 15930_300_tige_\'\$\'\\340\'\'_silicone_5_x_0_9cm.txt

$ ls *.txt | grep '15930_300_tige'
15930_300_tige_'$'\340''_silicone_5_x_0_9cm.txt


$ rm 15930_300_tige_\'\$\'\\340\'\'_silicone_5_x_0_9cm.txt

$ ls *.txt
ls: impossible d'accéder à '*.txt': Aucun fichier ou dossier de ce type

En espérant que cela réponde à ta question.

PS: Le nommage que tu nous montres, n'est vraiment pas un choix heureux (à mon sens).
**Simple Utilisateur** -- Debian stable - XFCE
sql84
Membre
Membre
Messages : 26
Inscription : 26 oct. 2022, 09:13
Status : Hors-ligne

Bonjour Dezix,
Merci pour ta réponse,
désolé si j'ai pas placé ma demande au bon endroit
PS: Le nommage que tu nous montres, n'est vraiment pas un choix heureux (à mon sens).
Ha ha ha, oui effectivement, je suis d'accord avec toi, c'est malheureusement pas moi qui est choisi, c'est un programme qui a généré ces fichiers sinon faut être maso pour nommer les fichiers ainsi :-), je pense que cela fait suite à des tentatives d'injection, car les images étaient générées en fonction du titre du produit dans l'url. j'ai changé cela mais j'ai tout un tas de fichier comme celui décris, ce que je veux faire à présent c'est supprimer ces fichiers, pas créer des fichiers avec tout un tas de caractères spéciaux
lorsque j'utilise la commande cela me dit que le fichier n'existe pas et lorsque j'échappe les caractères spéciaux, la commande n’aboutis pas le prompt me rend pas la main comme si il attendais une fin
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4957
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,

Et si tu commence par rm 15930 puis tu appuie sur TAB(ulation) pour qu'il te suggère le bon nommage du fichier, ça ne fonctionne pas ?

Code : Tout sélectionner

$ touch "15930_300_tige_'$'\340''_silicone_5_x_0_9cm.jpg"
$ rm 15930_300_tige_\'\$\'\\340\'\'_silicone_5_x_0_9cm.jpg 
$ 
$ ls 15*
ls: impossible d'accéder à '15*': Aucun fichier ou dossier de ce type

Sur ma Debian ça à l'air de fonctionner.

Edit: Les caractères "échappés" ont été placés par la console, pas par moi.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
sql84
Membre
Membre
Messages : 26
Inscription : 26 oct. 2022, 09:13
Status : Hors-ligne

Re bonjour,
et non puisque j'ai un quot en début et en fin du nom de fichier

Code : Tout sélectionner

'5590_150_poing_ferm'$'\351''_first_of_victory.jpg'


Comme tu peut le voir j'ai un simple quot avant 5590_....
lorsque je tabule, il me suggère rien du tout et ce même en échappant le premier quot,

Code : Tout sélectionner

rm \'5590_
aucun implémentation automatique
bon écoute c'est pas grave, je vais me connecter en mode graphique au lieu de la console, là je pense que je pourrais supprimer ces fichiers sans problème
il doit cependant exister une manière, encore une fois mon manque de compétence dans le domaine me fait cruellement défaut :cray:
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4957
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Hello,

C'est "drôle" car moi il me suggère bien le fichier, même avec un single quote devant:
Mais je suis pas en stable, on ne dois pas avoir les même versions de bash ou de bash-completion, ou je ne sais quel paquet.

Code : Tout sélectionner

$ mkdir /tmp/test
$ cd /tmp/test/
$ touch "'5590_150_poing_ferm'$'\351''_first_of_victory.jpg'"
$ ls
''\''5590_150_poing_ferm'\''$'\''\351'\'''\''_first_of_victory.jpg'\'''
$ rm \'5590_150_poing_ferm\'\$\'\\351\'\'_first_of_victory.jpg\' 
$ ls
$ 
Je te suggère cette astuce si tu n'as pas besoin d'automatiser le rm:

Code : Tout sélectionner

rm -i -- *
Tu répond par o ou n pour chaque fichier.
A lancer dans un répertoire de test d'abord évidemment (On est jamais trop prudent avec rm...) :wink:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Salut!

Bon, je n'avais pas capté que les quotes extrèmes faisaient aussi partie du "nom" :)))
Je me doute bien que tu n'as pas cela par pure masochisme :diablo:

Apparemment chez moi cela fonctionne :

Code : Tout sélectionner

$ touch \'15930_300_tige_\'\$\'\\340\'\'_silicone_5_x_0_9cm.txt\'

$ ls *.txt* | grep '15930_300_tige'
'15930_300_tige_'$'\340''_silicone_5_x_0_9cm.txt'

$ rm \'15930_300_tige_\'\$\'\\340\'\'_silicone_5_x_0_9cm.txt\'

**Simple Utilisateur** -- Debian stable - XFCE
Répondre