web-dev-qa-db-fra.com

Suppression d'une partie d'un nom de fichier pour plusieurs fichiers sous Linux

Je veux supprimer test.extra de tous mes noms de fichiers dans le répertoire actuel 

for filename in *.fasta;do 

    echo $filename | sed \e 's/test.extra//g'

done

mais il se plaint de ne pas fonder file.echo, il faut s’assurer de la liste correctement 

36
shaq

Tout d'abord, utilisez 'sed -e' au lieu de '\ e'

Et je vous suggère de le faire de cette façon à Bash 

for filename in *.fasta; do 
    [ -f "$filename" ] || continue
    mv "$filename" "${filename//test.extra/}"

done
39
hostmaster

Essayez rename "extra.test" "" *

$ find
./extra.test-eggs.txt
./extra.testbar
./fooextra.test
./ham-extra.test-blah

$ rename "extra.test" "" *
$ find
./-eggs.txt
./bar
./foo
./ham--blah
31
theon

Je sais que cette bande de roulement est ancienne, mais l’inscription suivante, inspirée de la réponse validée, m’a beaucoup aidée;)

for filename in ./*; do mv "./$filename" "./$(echo "$filename" | sed -e 's/test.extra//g')";  done
24
StephaneAG

Essayez la commande rename

rename 's/test.extra//g' *.fasta
22
Rody Oldenhuis
$ mmv '*test.extra*.fasta' '#1#2.fasta'

Ceci est sans danger dans le sens où mmv ne fera rien du tout s'il écraserait autrement les fichiers existants (il existe des options de ligne de commande pour désactiver cette option).

4
bobbogo

Dans Kali linux rename la commande est rename.ul

rename.ul 'chaîne-à-supprimer' 'chaîne-à-remplacer-avec' * .jpg

exemple: rename.ul 'chaîne inutile' '' * .jpg Ceci supprimera chaîne inutile de tous les noms de fichiers de l'image jpg.

1
Petrider

D'une part, vous avez un \e au lieu de -e.

0
Jon Lin