在Linux上删除多个文件的部分文件名

时间:2012-08-29 09:38:57

标签: linux bash shell

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

for filename in *.fasta;do 

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

done

但它抱怨没有创建file.echo是为了确保它正确列出。

8 个答案:

答案 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