我有一個文件夾中的n個文件的列表有一些格式。在UNIX終端中如何獲取文件夾中文件名的一部分?
如:ABCD.EXXXX.ZZZZ.ZZZZZ.txt
在上面的文件ABCD.E是所有文件的常見,ZZZZ.ZZZZ是用戶希望的字符串,我需要的所有文件解壓XXXX,需要顯示不同的XXXX給用戶..有沒有辦法這樣做。?幫我在提前這樣做..謝謝..
我有一個文件夾中的n個文件的列表有一些格式。在UNIX終端中如何獲取文件夾中文件名的一部分?
如:ABCD.EXXXX.ZZZZ.ZZZZZ.txt
在上面的文件ABCD.E是所有文件的常見,ZZZZ.ZZZZ是用戶希望的字符串,我需要的所有文件解壓XXXX,需要顯示不同的XXXX給用戶..有沒有辦法這樣做。?幫我在提前這樣做..謝謝..
awk -F"."'{print $2}' filename
你可以嘗試打印$1
,$2
,$3
...得到命令的更多的瞭解。
使用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}'
可以使用的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