假設(shè)某個目錄下有一堆以jpeg為后綴的文件名,我們需要在另一個目錄中獲得他們的文件名,并輸出。
可以聯(lián)合使用ls,awk,sed等命令來完成。
方法一:
使用ls列出目錄下以.jpeg為結(jié)尾的文件,然后逐個處理每一個,逐個輸出。
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的內(nèi)置變量,表示最后一個項。
2、awk按行處理,盡管ls輸出的時候不是把每個文件單行輸出的,但是它每輸出一個,接著就會緊接著被處理,所以最終結(jié)果也是按行的。
3、awk的-F選項用于指定每行中的分割符,可以使用正則表達式,比如可以使用‘[/.]’表示/或者.用來做分割符。但是不要用.第一次來做分割符,因為.可以存在一個文件名中多次。
4、sed也是按行處理文本的,其匹配方式也遵循正則表達式。
5、sed的執(zhí)行命令s表示的替換的意思,命令中jpeg后面的$表示匹配行末尾。如果文本末尾有空白字符還需要加上s*





