删除文件名的一部分,在Linux上的多个文件(Removing part of a filename

2019-06-17 21:47发布

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

for filename in *.fasta;do 

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

done

但抱怨没有创始file.echo是要确保它正确列出。

Answer 1:

首先,使用“sed的-e”而不是“\ E”

而且我会建议你做这种方式在bash

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

done


Answer 2:

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


Answer 3:

我知道这胎面老了,但是下面oneliner,从验证答案的启发,对我帮助很大;)

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


Answer 4:

尝试rename命令:

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


Answer 5:

$ mmv '*test.extra*.fasta' '#1#2.fasta'

这在一定意义安全mmv在所有如果它本来覆盖现有文件不会做任何事情(有命令行选项关闭这个功能)。



Answer 6:

卡利LINUX重命名的命令是rename.ul

rename.ul“字符串到中删除”“串更换的,以” * .JPG

例如:rename.ul“无用字符串”“” * .JPG这将从所有的JPG图片的FILNAME删除无用字符串。



Answer 7:

 // EXTENSION - File extension of files
 // STRING - String to be Replace

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


Answer 8:

一方面,你有一个\e来代替-e



文章来源: Removing part of a filename for multiple files on Linux
标签: linux bash shell