0

我有一堆文件,我可以使用以下命令(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

4

1 回答 1

1

这是许多方法之一:

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/"`
于 2013-10-19T00:50:07.460 回答