script bash

Aucune réponse
Avatar
Steve
Bonjour,

J'aurai bespoin de vos conseils.

J'aun un backup qui s'est mal déroulé et pas mal de mes fichiers, sont
devenus invisibles...
En fait, un fichier nommé : toto.txt est devenu toto.txt~
ils ont l'air d'être tous correct si renommé, le fichier s'ouvre
correctememnt.

Y aurait il un script qui me permet de renommer tous les fichiers finissant
pas "~" et .. de supprimer ce "~" à la fin de mon fichier ?

Merci d'avance

10 réponses

Avatar
Sergio
Le Sun, 19 May 2013 07:12:00 +0200, Steve a écrit :

Bonjour,

J'aurai bespoin de vos conseils.

J'aun un backup qui s'est mal déroulé et pas mal de mes fichiers, sont
devenus invisibles...
En fait, un fichier nommé : toto.txt est devenu toto.txt~
ils ont l'air d'être tous correct si renommé, le fichier s'ouvre
correctememnt.

Y aurait il un script qui me permet de renommer tous les fichiers
finissant pas "~" et .. de supprimer ce "~" à la fin de mon fichier ?



rename 's/~$//' *~
Avatar
Benoit Izac
Bonjour,

le 19/05/2013 à 07:12, Steve a écrit dans le message
<51985f20$0$2559$ :

J'aun un backup qui s'est mal déroulé et pas mal de mes fichiers, sont
devenus invisibles...
En fait, un fichier nommé : toto.txt est devenu toto.txt~
ils ont l'air d'être tous correct si renommé, le fichier s'ouvre
correctememnt.

Y aurait il un script qui me permet de renommer tous les fichiers
finissant pas "~" et .. de supprimer ce "~" à la fin de mon fichier ?



Pour renommer tous les fichiers présents dans le dossier où tu te
trouves et ses sous-dossiers et dont le nom de fichier se termine par
'~' (si tes noms de fichiers ne comportent pas de retour à la ligne) :

find . -name '*~' | (IFS='n'; while read -r f; do mv "$f" "${f%*~}"; done)

Tu peux remplacer « do mv » par « do echo mv » dans un premier temps
afin de vérifier que ça correspond à ce que tu veux faire.

--
Benoit Izac
Avatar
Steve
Benoit Izac wrote:

find . -name '*~' | (IFS='n'; while read -r f; do mv "$f" "${f%*~}";
done)




Boujour les gars;

Apparemment,

find . -name '*~' | (IFS='n'; while read -r f; do mv "$f" "${f%*~}"; done)
a bien marché...
rename 's/~$//' *~ ça n'a pas l'air d'avoir fonctionné.. et je ne sais
pas pourquoi :-(

Merci à tous les deux !!
Avatar
Nicolas Richard
Steve writes:
find . -name '*~' | (IFS='n'; while read -r f; do mv "$f" "${f%*~}"; d one)
a bien marché...



C'est quand même moche comme commande.

rename 's/~$//' *~ ça n'a pas l'air d'avoir fonctionné.. e t je ne sais
pas pourquoi :-(



Il y a plusieurs programmes "rename" qui traînent. "man rename" pour
voir quelles sont les options offertes par la version sur ton système.

N.
Avatar
Benoit Izac
Bonjour,

le 19/05/2013 à 22:05, Nicolas Richard a écrit dans le message
:

find . -name '*~' | (IFS='n'; while read -r f; do mv "$f" "${f%*~}"; done)
a bien marché...



C'est quand même moche comme commande.

rename 's/~$//' *~ ça n'a pas l'air d'avoir fonctionné.. et je ne sais
pas pourquoi :-(



Il y a plusieurs programmes "rename" qui traînent. "man rename" pour
voir quelles sont les options offertes par la version sur ton système.



C'est toute la différence entre une commande "moche" mais standard et
une autre, aussi belle soit-elle, non standard.

À noter que les deux commandes ne sont pas strictement équivalentes ;
pour faire la même chose que « rename 's/~$//' *~ » ce serait plutôt :
for f in *~; do mv -- "$f" "${f%*~}"; done

Mais tant qu'à faire du non standard, je préfère zsh :
zmv '(*)~' '$1'

--
Benoit Izac
Avatar
yamo'
Salut,

Steve a tapoté, le 19/05/2013 14:22:
rename 's/~$//' *~ ça n'a pas l'air d'avoir fonctionné.. et je ne sais
pas pourquoi :-(



Il faut se placer là où tes fichiers sont mais, il n'est pas récursif.

$ mkdir /tmp/test
$ touch /tmp/test1~ /tmp/test/test2~
$ ls /tmp/*~
/tmp/test~ /tmp/test1~
$ cd /tmp/
$ rename 's/~$//' *~ -nv # v pour verbose et n pour no act
test~ not renamed: test already exists
test1~ renamed as test1




--
Stéphane <http://pasdenom.info/fortune/?>
BOFH excuse #317:

Internet exceeded Luser level, please wait until a luser logs off before
attempting to log back on.
Avatar
ulysse2k
Le dimanche 19 Mai 2013 à 07:12 par Steve :
Bonjour,

J'aurai bespoin de vos conseils.

J'aun un backup qui s'est mal déroulé et pas mal de mes fichiers,
sont
devenus invisibles...
En fait, un fichier nommé : toto.txt est devenu toto.txt~
ils ont l'air d'être tous correct si renommé, le fichier s'ouvre
correctememnt.

Y aurait il un script qui me permet de renommer tous les fichiers finissant
pas "~" et .. de supprimer ce "~" à la fin de mon
fichier ?

Merci d'avance


Tu te positionnes dans le répertoire de l'utilisateur (~)

find . -name "*~"-exec rm -rf {} ;

Il va trouver tous les fichiers se terminant pas ~ et les supprimer (et c'est récursif) ;)
Avatar
Erwan David
ulysse2k écrivait :

Le dimanche 19 Mai 2013 à 07:12 par Steve :
Bonjour,

J'aurai bespoin de vos conseils.

J'aun un backup qui s'est mal déroulé et pas mal de mes fichiers,
sont
devenus invisibles...
En fait, un fichier nommé : toto.txt est devenu toto.txt~
ils ont l'air d'être tous correct si renommé, le fichier s'ouvre
correctememnt.

Y aurait il un script qui me permet de renommer tous les fichiers finissant
pas "~" et .. de supprimer ce "~" à la fin de mon
fichier ?

Merci d'avance


Tu te positionnes dans le répertoire de l'utilisateur (~)

find . -name "*~"-exec rm -rf {} ;

Il va trouver tous les fichiers se terminant pas ~ et les supprimer (et c'est
récursif) ;)



Le posteur veut les *renommer* pas les supprimer !

--
Les simplifications c'est trop compliqué
Avatar
ST
On 2013-05-20, Erwan David wrote:
ulysse2k écrivait 
Y aurait il un script qui me permet de renommer tous les fichiers finissant
pas "~" et .. de supprimer ce "~" à la fin de mon
fichier ?

Merci d'avance


Tu te positionnes dans le répertoire de l'utilisateur (~)

find . -name "*~"-exec rm -rf {} ;





for i in `find . -name "*~"` ; do mv $i `echo $i | sed -e 's/~$//'` ; done
Avatar
Benoit Izac
Bonjour,

le 21/05/2013 à 02:34, ST a écrit dans le message
:

Y aurait il un script qui me permet de renommer tous les fichiers
finissant pas "~" et .. de supprimer ce "~" à la fin de mon
fichier ?

Merci d'avance


Tu te positionnes dans le répertoire de l'utilisateur (~)

find . -name "*~"-exec rm -rf {} ;





for i in `find . -name "*~"` ; do mv $i `echo $i | sed -e 's/~$//'` ; done



% touch "a b~"
% for i in `find . -name "*~"` ; do mv $i `echo $i | sed -e 's/~$//'` ; done
mv: cannot stat ‘./a’: No such file or directory
mv: cannot stat ‘b~’: No such file or directory

--
Benoit Izac