删除一堆文件的一部分文件名

我想从当前目录中的所有文件名删除test.extra

for filename in *.fasta;do echo $filename | sed \e 's/test.extra//g' done 

但它抱怨不build立file.echo是确保它正确列表。

首先使用'sed -e'而不是'\ e'

我建议你在bash中这样做

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

尝试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 

尝试rename命令:

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

我知道这个问题已经很老了,但是从确认的答案中得到启发,以下的指引帮助了我很多;)

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

这是安全的,因为mmv将不会做任何事情,否则将覆盖现有的文件(有命令行选项来关闭它)。

首先,你有一个\e而不是-e