ファイルを複数のサブディレクトリに分割する方法

ファイルを複数のサブディレクトリに分割する方法

ストーリーを含むファイルがあります。各章(「chapter」という単語で始まる章)が異なるディレクトリにあるようにファイルを分割する必要があります。

CHAPTERカウント - 「CHAPTER」という単語の後に続くすべての項目(このように)。したがって、単語が表示されるたびに、次の「章」まで新しいディレクトリに移動する必要があります。ディレクトリを作成する必要がありますが、ディレクトリは存在しません。

例は次のとおりです。

CHAPTER XII. Alice’s Evidence
‘Here!’ cried Alice, quite forgetting in the flurry of the moment how
great emphasis, looking hard at Alice as he said do.
CHAPTER VI. Pig and Pepper
CHAPTER VII. A Mad Tea-Party
CHAPTER VIII. The Queen’s Croquet-Ground
CHAPTER IX. The Mock Turtle’s Story

テキストに「CHAPTER」という単語が表示される他の方法はありません。

ベストアンサー1

この解決策は次のことを前提としています。

  1. CHAPTER常に行の最初の単語です。
  2. その後には常にスペースが続き、ローマ数字(1つ以上の大文字のI、V、X、L、C、D、またはMが続きます.

その後、2つのステップに進みます。

  1. 各章を...(入力ファイル)という名前の独自のファイルに分割しますCHAPTER_I.txtCHAPTER_II.txtCHAPTER_N.txtfile

    awk '/^CHAPTER [IVXLCDM]+/{name=$1"_"$2"txt"} {print > name}' file
    
  2. 次のファイルを独自のディレクトリに移動します。

    for file in CHAPTER_[IVXLCDM]*.txt; do 
        mkdir -p "${file//.txt}" && mv "$file" "${file//.txt}"
    done    
    

おすすめ記事