我有一堆文件,我可以通过以下命令获得这些文件(其中EXT
是扩展名):
oIFS=$IFS
IFS=$'n'
array=$(find . -iregex '.*(EXT)' -print)
for file in ${array[@]}; do
echo "$file"| cut -f1 -d" - "
done
IFS=oIFS
文件名格式如下:PARTONE - PARTTWO
其中第一部分是任何字符(但not a dash [-]
,第二部分是任何字符,可以包含破折号)
有没有办法让 PARTONE 和 PARTTWO 进入自己的变量?目前,(我相信)由于空格是分隔符的一部分,它不起作用,我收到以下错误cut: bad delimiter
以下是许多方法之一:
oIFS=$IFS
IFS=$'n'
array=$(find . -iregex '.*(EXT)' -print)
for file in ${array[@]}; do
PART_ONE=`echo $file | sed "s/ - .*$//"`
PART_TWO=`echo $file | sed "s/^[^-]* - //"`
done
IFS=$oIFS
要从第一部分删除./
前缀(假设前缀始终存在):
PART_ONE=`echo $file | sed "s/^./([^-]*) - .*$/1/"`
并从第二部分中删除扩展名:
PART_TWO=`echo $file | sed "s/^[^-]* - (.*).[^.]*$/1/"`