【问题标题】:How to remove all file extensions in bash?如何删除 bash 中的所有文件扩展名?
【发布时间】:2022-12-14 21:52:24
【问题描述】:
x=./gandalf.tar.gz
noext=${x%.*}
echo $noext

这会打印出./gandalf.tar,但我只需要./gandalf。 我什至可能有像 ./gandalf.tar.a.b.c 这样的文件,它有更多的扩展名。

我只需要第一个.之前的部分

【问题讨论】:

  • @anubhava 我在现已删除的评论中提出了同样的建议。注意$x开头的.。
  • @anubhava:这会打印一个空行。
  • x=./gandalf.tar.gz; echo "${x//.tar.gz/}"bash 参数扩展用空字符串替换文件扩展名。

标签: bash substitution file-extension


【解决方案1】:

如果你想给sed一个机会,那么:

x='./gandalf.tar.a.b.c'
sed -E 's~(.)..*~~g' <<< "$x"

./gandalf

或者 bash 中的两步过程:

x="${s#./}"
echo "./${x%%.*}"

./gandalf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多