如何将一个文件分成不同的子目录

如何将一个文件分成不同的子目录

我有一个包含故事的文件。我需要以每一章(以“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. 它后面总是跟一个空格,然后是一个罗马数字(一个或多个大写字母 I、V、X、L、C、D 或 M 并以..

然后,我们分两步进行:

  1. 将每一章拆分为自己的文件,名为CHAPTER_I.txt, CHAPTER_II.txt... CHAPTER_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    
    

相关内容