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

新手上路,请多包涵

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

 for filename in *.fasta;do

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

done

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

原文由 shaq 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 428
2 个回答

首先使用 ‘sed -e’ 而不是 ‘\e’

我建议你在 bash 中这样做

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

done

原文由 hostmaster 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 theon 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题