Подтвердить что ты не робот

Удаление части имени файла для нескольких файлов в Linux

Я хочу удалить test.extra из всех имен моих файлов в текущем каталоге

for filename in *.fasta;do 

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

done

но он жалуется на то, что файл file.echo не найден, чтобы убедиться, что он отображается правильно.

4b9b3361

Ответ 1

Прежде всего используйте 'sed -e' вместо '\ e'

И я предлагаю вам сделать это таким образом в bash

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

done

Ответ 2

Попробуйте rename "extra.test" "" *

Или rename 's/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

Ответ 3

Я знаю, что этот протектор старый, но следующий oneliner, вдохновленный подтвержденным ответом, мне очень помог;)

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

Ответ 4

Попробуйте выполнить команду rename:

rename 's/test.extra//g' *.fasta

Ответ 5

$ mmv '*test.extra*.fasta' '#1#2.fasta'

Это безопасно в том смысле, что mmv вообще ничего не сделает, если он в противном случае перезапишет существующие файлы (есть опции командной строки, чтобы отключить это).

Ответ 6

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

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

Ответ 7

В Kali linux команда переименования называется rename.ul

rename.ul 'строка для удаления' 'строка для замены' *.jpg

пример: rename.ul 'useless-string' '' *.jpg Это удалит бесполезную строку из всего имени файла изображения jpg.

Ответ 8

Во-первых, вместо -e у вас есть \e.