2014-02-13 46 views
0

我有一個文件夾中的n個文件的列表有一些格式。在UNIX終端中如何獲取文件夾中文件名的一部分?

如:ABCD.EXXXX.ZZZZ.ZZZZZ.txt

在上面的文件ABCD.E是所有文件的常見,ZZZZ.ZZZZ是用戶希望的字符串,我需要的所有文件解壓XXXX,需要顯示不同的XXXX給用戶..有沒有辦法這樣做。?幫我在提前這樣做..謝謝..

回答

0
awk -F"."'{print $2}' filename 

你可以嘗試打印$1$2$3 ...得到命令的更多的瞭解。

1

使用ls -1來製作相關文件的列表。將其管入sed以剝離開始的'ABCD.E'。然後將其重新塞入sed中,以便在第一次「刪除」後刪除所有內容。

ls -1 ABCD\.E*\.txt | sed 's/^ABCD\.E//' | sed 's/\..*//' 

另外,如果你想輸出的多一點的控制,你可以做的第二位使用awk

ls -1 ABCD\.E*\.txt | sed 's/^ABCD\.E//' | awk 'BEGIN{FS="."}{print "value =", $1, "user=", $2"."$3}' 
0

可以使用的bash/ksh的參數subsitution #%這個從內貝殼。

function get_filename_section { 
    typeset f=${1:?} 
    typeset r=${f#ABCD.E} 
    print ${r%.ZZZZ.ZZZZZ.txt} 
} 

測試:

[[ $(get_filename_section ABCD.EXXXX.ZZZZ.ZZZZZ.txt) == XXXX ]] && 
    echo ok || echo no 
相關問題