56

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

for filename in *.fasta;do 

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

done

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

4

7 回答 7

65

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

我建议你在 bash 中这样做

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

done
于 2012-08-29T09:50:24.443 回答
48

尝试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
于 2012-08-29T09:55:23.410 回答
33

我知道这个胎面很旧,但是下面的 oneliner,从经过验证的答案中得到启发,对我帮助很大;)

for filename in ./*; do mv "./$filename" "./$(echo "$filename" | sed -e 's/test.extra//g')";  done
于 2015-03-12T02:27:48.500 回答
28

试试rename命令:

rename 's/test.extra//g' *.fasta
于 2012-08-29T09:46:11.753 回答
4
$ mmv '*test.extra*.fasta' '#1#2.fasta'

这是安全的,因为mmv如果它会覆盖现有文件(有命令行选项可以关闭它),它根本不会做任何事情。

于 2012-08-29T13:10:12.813 回答
3
 // EXTENSION - File extension of files
 // STRING - String to be Replace

      for filename in *.EXTENSION;
      do  [ -f "$filename" ] || continue;  
      mv "$filename" "${filename//STRING/}"; 
      done
于 2019-03-05T07:36:58.653 回答
2

Kali linux中重命名命令是rename.ul

rename.ul 'string-to-remove' 'string-to-replace-with' *.jpg

例如: rename.ul 'useless-string' '' *.jpg 这将从所有 jpg 图像的文件名中删除无用字符串。

于 2018-12-29T13:18:56.603 回答