2014-02-13 49 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 
相关问题