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。1 番目の部分は任意の文字です (ただしnot a dash [-]、2 番目の部分は任意の文字で、ダッシュを含めることができます)。

PARTONE と PARTTWO を独自の変数に入れる方法はありますか? 現在、(私は信じています)スペースが区切り文字の一部であるため、機能せず、次のエラーが発生しますcut: bad delimiter

4

1 に答える 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/"`

そして、2 番目の部分から拡張子を削除するには:

PART_TWO=`echo $file | sed "s/^[^-]* - \(.*\)\.[^\.]*$/\1/"`
于 2013-10-19T00:50:07.460 に答える