Ответ 1
Прежде всего используйте 'sed -e' вместо '\ e'
И я предлагаю вам сделать это таким образом в bash
for filename in *.fasta; do
[ -f "$filename" ] || continue
mv "$filename" "${filename//test.extra/}"
done
Я хочу удалить test.extra из всех имен моих файлов в текущем каталоге
for filename in *.fasta;do
echo $filename | sed \e 's/test.extra//g'
done
но он жалуется на то, что файл file.echo не найден, чтобы убедиться, что он отображается правильно.
Прежде всего используйте 'sed -e' вместо '\ e'
И я предлагаю вам сделать это таким образом в bash
for filename in *.fasta; do
[ -f "$filename" ] || continue
mv "$filename" "${filename//test.extra/}"
done
Попробуйте 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
Я знаю, что этот протектор старый, но следующий oneliner, вдохновленный подтвержденным ответом, мне очень помог;)
for filename in ./*; do mv "./$filename" "./$(echo "$filename" | sed -e 's/test.extra//g')"; done
Попробуйте выполнить команду rename
:
rename 's/test.extra//g' *.fasta
$ mmv '*test.extra*.fasta' '#1#2.fasta'
Это безопасно в том смысле, что mmv
вообще ничего не сделает, если он в противном случае перезапишет существующие файлы (есть опции командной строки, чтобы отключить это).
// EXTENSION - File extension of files
// STRING - String to be Replace
for filename in *.EXTENSION;
do [ -f "$filename" ] || continue;
mv "$filename" "${filename//STRING/}";
done
В Kali linux команда переименования называется rename.ul
rename.ul 'строка для удаления' 'строка для замены' *.jpg
пример: rename.ul 'useless-string' '' *.jpg Это удалит бесполезную строку из всего имени файла изображения jpg.
Во-первых, вместо -e
у вас есть \e
.