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

for filename in *.fasta;do 

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

done

但它抱怨没有建立文件.echo是为了确保列表正确.

推荐答案

首先,请使用"sed-e"而不是"\e"

我建议你在bash中这样做

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

done

Linux相关问答推荐

为什么在Linux上STD::SLEEP_FOR(STD::Chrono::Hors::Max())会立即返回?

从一个文件中读取文件名并将文件名和内容存储到另一个带有|的文件中作为分隔符

从 MariaDB 连接到 Oracle 时出现错误消息libsqora.so.11.1:找不到文件

使用awk命令将以:分隔的两个文件合并的方法

加载ELF64头文件为什么会导致分段错误?

如何让xargs对 bash 脚本中find命令找到的所有文件执行?

当未在日志(log)中输入确切的时间戳时如何过滤日期范围内的值

/usr/local/bin/ 中Collection的权限被拒绝

如何判断 Ubuntu 12.04 LTS 上是否安装了多个版本的 PHP?

来自远程主机的 mysqldump

用于 GCC/G++ 的宏来区分 Linux 和 Mac OSX?

如何将文件从 Vagrant 机器复制到 localhost

通过 VM 的 Centos - 镜像列表中没有 URL

如何以另一个用户的身份使用 sudo 在 bash 子shell 中执行一系列命令?

如何分析内存使用情况?

如何搜索文件并将它们压缩到一个 zip 文件中

如何更改 tmux 会话的起始目录?

如何获取 GNU Makefile 中使用的 shell 命令的退出状态?

从文件中随机 Select 行而不用 Unix 啜饮它

如何限制我网站的 API 用户?