我想从当前目录中的所有文件名中删除 test.extra
for filename in *.fasta;do
echo $filename | sed \e 's/test.extra//g'
done
但它抱怨没有创建file.echo是为了确保它正确列出。
答案 0 :(得分:40)
首先使用'sed -e'而不是'\ e'
我建议你在bash中这样做。
for filename in *.fasta; do
[ -f "$filename" ] || continue
mv "$filename" "${filename//test.extra/}"
done
答案 1 :(得分:32)
尝试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
答案 2 :(得分:25)
我知道这个步骤已经过时了,但是下面的oneliner,从经过验证的答案中获得灵感,对我帮助很大;)
for filename in ./*; do mv "./$filename" "./$(echo "$filename" | sed -e 's/test.extra//g')"; done
答案 3 :(得分:23)
尝试rename
命令:
rename 's/test.extra//g' *.fasta
答案 4 :(得分:4)
$ mmv '*test.extra*.fasta' '#1#2.fasta'
这是安全的,mmv
根本不会做任何事情,否则会覆盖现有文件(有命令行选项将其关闭)。
答案 5 :(得分:1)
在 Kali linux 中,重命名命令为 rename.ul
rename.ul'要删除的字符串''要替换的字符串'* .jpg
示例:rename.ul'无用字符串'''* .jpg 这将从所有jpg图片的文件名中删除无用的字符串。
答案 6 :(得分:1)
// EXTENSION - File extension of files
// STRING - String to be Replace
for filename in *.EXTENSION;
do [ -f "$filename" ] || continue;
mv "$filename" "${filename//STRING/}";
done
答案 7 :(得分:0)
首先,您有一个\e
而不是-e
。