it-swarm.com.de

Entfernen eines Teils eines Dateinamens für mehrere Dateien unter Linux

Ich möchte test.extra aus allen Dateinamen im aktuellen Verzeichnis entfernen 

for filename in *.fasta;do 

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

done

aber es beschwert sich darüber, dass file.echo nicht gefunden wurde, um sicher zu gehen, dass sie korrekt aufgelistet wird. 

36
shaq

Verwenden Sie zuerst 'sed -e' anstelle von '\ e'

Und ich würde vorschlagen, dass Sie es in bash so machen 

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

done
39
hostmaster

rename "extra.test" "" * ausprobieren

$ 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

Ich weiß, dass dieses Profil alt ist, aber der folgende Oneliner, inspiriert von der bestätigten Antwort, hat mir sehr geholfen.

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

Versuchen Sie den Befehl rename

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

Dies ist sicher in dem Sinne, dass mmv überhaupt nichts tut, wenn andernfalls vorhandene Dateien überschrieben würden (es gibt Befehlszeilenoptionen, um dies auszuschalten).

4
bobbogo
 // EXTENSION - File extension of files
 // STRING - String to be Replace

      for filename in *.EXTENSION;
      do  [ -f "$filename" ] || continue;  
      mv "$filename" "${filename//STRING/}"; 
      done
2
Hakeem P Ali

In Kali Linux Umbenennen Befehl lautet umbenennen.ul

rename.ul 'zu entfernende Zeichenfolge' 'zu ersetzende Zeichenfolge' * .jpg

beispiel: rename.ul 'useless-string' '' * .jpg Dies löscht den useless-string aus dem gesamten Dateinamen des JPG-Bildes.

1
Petrider

Zum einen haben Sie einen \e anstelle von -e.

0
Jon Lin