我有一个文件夹中的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