当前位置: 首页 > 知识库问答 >
问题:

如何区分带后缀和不带后缀的文件名?

祖浩淼
2023-03-14

我正在编写一个bash shell脚本来输出文件名的后缀。

在这种情况下,我使用:

sed 's|.*\.||'

因此,输出例如:

png
exe
c

但是,如果文件名没有后缀,因此没有点,我该怎么办?我的输出应该是“无后缀”,但我不知道如何用sed做到这一点。

编辑我已经尝试过的内容:

目录:

abc.x
abc.y
abc

输入:

find . -type f | sed -E 's/^[^.]+$/no suffix/; s/.*\.//'

输出:

x
y
/abc

共有3个答案

金令秋
2023-03-14
$ cat file
abc.x
abc.y
abc

$ awk -F'.' '{print (NF>1 ? $NF : "no suffix")}' file
x
y
no suffix
邢洋
2023-03-14

一个在awk。首先一些没有提供的测试材料:

$ cat foo
this.foo
that.bar
nothing

awk:

$ awk '{n=split($0,a,".");print (n>1?a[n]:"no suffix")}' foo
foo
bar
no suffix
阎昌勋
2023-03-14

使用两次连续替换:

sed -E 's/^[^.]+$/no suffix/; s/.+\.//'
 类似资料:
  • 这是一个在众多OCaml生成平台上使用的标准文件名和后缀名的参考. 源文件和目标文件 与C语言源文件、目标文件和二进制文件的对照: 用途 C 字节码 原生码 源文件 *.c *.ml *.ml 头文件1 *.h *.mli *.mli 目标文件 *.o *.cmo *.cmx2 库文件 *.a *.cma *.cmxa3 二进制程序 prog prog prog.opt4 注释 在C中,头文件用来

  • 问题内容: 我有一个名为“ seeder”的软件包: 现在我想用MyFunc前缀调用所有函数 我想要这样的东西: 这个输出: EDIT1 :在此示例中,parentKey是在循环中更改的字符串变量 但是GC说: 使用没有选择器的包播种机 问题答案: 您无法通过函数名称获得函数,而这正是您想要做的。原因是,如果Go工具可以检测到未显式引用某个函数(因此无法访问该函数),则该函数甚至可能无法编译为可执

  • 问题内容: 我有一个清单,: 并需要复制一些带有后缀的值(顺序很重要): 我试过了: 是否有一些更好的,更多的pythonic解决方案? 问题答案: 您可以使其成为生成器: 您也可以使用,或嵌套式理解来做到这一点,但在大多数情况下,我希望使用一种易于理解的自定义生成器函数。 借助python3.3,您还可以使用“生成器委派”使这种优雅的解决方案更加简洁:

  • 当你编写一个算术表达式如 B*C 时,表达式的形式使你能够正确理解它。在这种情况下,你知道 B 乘以 C, 因为乘法运算符 * 出现在表达式中。这种类型的符号称为中缀,因为运算符在它处理的两个操作数之间。看另外一个中缀示例,A+B*C,运算符 + 和 * 仍然出现在操作数之间。这里面有个问题是,他们分别作用于哪个运算数上,+ 作用于 A 和 B , 还是 * 作用于 B 和 C?表达式似乎有点模糊

  • 我已经配置postfix通过遵循他们的集成指南和发送电子邮件的工作没有问题,以中继邮件到亚马逊SES。 然而,我最近使用一个框架编写了一个PHP应用程序,它生成了一条格式错误的电子邮件。 SES拒绝带有“554 Transaction failed:Expected MIME type,get=”的电子邮件,这是可以接受的。 然而,我的本地postfix服务器随后尝试发送发件人未送达通知,其中包含

  • 问题内容: 我正在寻找后缀符号表示法的算法,该算法将产生最小数量的括号。 我发现它会产生很多括号:http : //tajendrasengar.blogspot.com/2011/09/postfix-to- infix-algorithm.html 例如 输入: 结果: 问题答案: 如果您确实希望尽可能地减少括号,则需要执行的操作与链接的算法类似。然而… 您应该为中的每个 复合 操作数存储一个