当前位置:首页 > 芯闻号 > 充电吧
[导读]假设某个目录下有一堆以jpeg为后缀的文件名,我们需要在另一个目录中获得他们的文件名,并输出。可以联合使用ls,awk,sed等命令来完成。方法一:使用ls列出目录下以.jpeg为结尾的文件,然后逐个

假设某个目录下有一堆以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/.jpegs*$//'

说明:

1、awk主要可以用来对单行分割,分割的后的单个项,可以用$num 来输出,其中num是所要输出的项的列编号。NF是awk的内置变量,表示最后一个项。

2、awk按行处理,尽管ls输出的时候不是把每个文件单行输出的,但是它每输出一个,接着就会紧接着被处理,所以最终结果也是按行的。

3、awk的-F选项用于指定每行中的分割符,可以使用正则表达式,比如可以使用‘[/.]’表示/或者.用来做分割符。但是不要用.第一次来做分割符,因为.可以存在一个文件名中多次。

4、sed也是按行处理文本的,其匹配方式也遵循正则表达式。

5、sed的执行命令s表示的替换的意思,命令中jpeg后面的$表示匹配行末尾。如果文本末尾有空白字符还需要加上s*





本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭