首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印目录中以.cif结尾的文件名?

如何打印目录中以.cif结尾的文件名?
EN

Stack Overflow用户
提问于 2019-03-21 22:29:22
回答 2查看 59关注 0票数 0

我有一个目录,里面有很多.cif文件。我想要通读文件名并将以.cif结尾的文件打印到一个文件中。

这是我尝试过的:

代码语言:javascript
复制
#!/bin/bash

directory=/MOFS

:>| names_mofs

myfilenames="${directory}/*.cif"
for file in $myfilenames
do
   echo $file >> names_mofs

done

但是这段代码将/MOFS/*.cif打印到names_mofs文件中。我还需要打印整个名称,包括.cif扩展名。

我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-21 22:35:21

我通常不提倡在脚本中使用cd,但在这里,这是去掉目录名的最简单方法。

代码语言:javascript
复制
( cd /MOFS; printf '%s\n' *.cif ) >names_mofs

括号创建了一个子外壳,因此cd不会影响括号之外的脚本的其余部分。

如果出于某种原因,您希望保留循环并避免cd,则basename命令将按您的要求执行。但是,shell可以用parameter expansion做几乎相同的事情。

代码语言:javascript
复制
for file in "$directory"/*.cif; do
    #basename "$file"  # notice proper quoting
    echo "${file##*/}"
done >names_mofs

简而言之,${variable##pattern}生成variable的值,去掉任何与pattern匹配的前缀。

另请参阅When to wrap quotes around a shell variable?

票数 1
EN

Stack Overflow用户

发布于 2019-03-21 22:30:40

代码语言:javascript
复制
ls -A "$directory" | grep -E '.*\.cif'

这样就可以了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55282744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档