首页 > 代码库 > BASH如何获得某个目录下的某类文件的文件名
BASH如何获得某个目录下的某类文件的文件名
假设某个目录下有一堆以jpeg为后缀的文件名,我们需要在另一个目录中获得他们的文件名,并输出。
可以联合使用ls,awk,sed等命令来完成。
方法一:
使用ls列出目录下以.jpeg为结尾的文件,然后逐个处理每一个,逐个输出。
ls thepath/*.jpeg | awk -F ‘/‘ ‘{print $NF}‘ | awk -F ‘.‘ ‘{print $1}‘
方法二:
最后一步不用awk,而是用sed的替换命令,将‘.jpeg’替换为空。
ls thepath/*.jpeg | awk -F ‘/‘ ‘{print $NF}‘ | sed ‘s/\.jpeg\s*$//‘
说明:
1、awk主要可以用来对单行分割,分割的后的单个项,可以用$num 来输出,其中num是所要输出的项的列编号。NF是awk的内置变量,表示最后一个项。
2、awk按行处理,尽管ls输出的时候不是把每个文件单行输出的,但是它每输出一个,接着就会紧接着被处理,所以最终结果也是按行的。
3、awk的-F选项用于指定每行中的分割符,可以使用正则表达式,比如可以使用‘[/.]’表示/或者.用来做分割符。但是不要用.第一次来做分割符,因为.可以存在一个文件名中多次。
4、sed也是按行处理文本的,其匹配方式也遵循正则表达式。
5、sed的执行命令s表示的替换的意思,命令中jpeg后面的$表示匹配行末尾。如果文本末尾有空白字符还需要加上\s*
BASH如何获得某个目录下的某类文件的文件名
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。