如何在一个子目录中合并文件并在多个子目录上执行此功能

用户名

我有一个包含〜2000个子目录的目录,并且每个子目录中都有2-10个txt文件。我想打开每个子目录,然后将内容合并或合并为一个文件,因此,我将拥有2000个目录,每个目录都有1个txt文件。我尝试使用Unix命令执行此操作,但似乎无法使命令在特定的子目录中执行,然后更改目录并再次执行该功能。

find . -maxdepth 1 -name "*.faa" -exec cat {} 

有没有办法将其转换为bash脚本并使其在整个目录中运行,还是我应该寻找更类似于python的东西来尝试完成此任务。

谢谢你,如果这个问题我很抱歉。

杰德沃兹

这应该给您您想要的,并且可以根据您的需求进行定制:

import os

OLD_BASE = '/tmp/so/merge/old'
NEW_BASE = '/tmp/so/merge/new'
NEW_NAME = 'merged.txt'

def merge_files(infiles, outfile):
    with open(outfile, 'wb') as fo:
        for infile in infiles:
            with open(infile, 'rb') as fi:
                fo.write(fi.read())


for (dirpath, dirnames, filenames) in os.walk(OLD_BASE):
    base, tail = os.path.split(dirpath)
    if base != OLD_BASE: continue  # Don't operate on OLD_BASE, only children directories

    # Build infiles list
    infiles = sorted([os.path.join(dirpath, filename) for filename in filenames])

    # Create output directory
    new_dir =  os.path.join(NEW_BASE, tail)
    os.mkdir(new_dir)  # This will raise an OSError if the directory already exists

    # Build outfile name
    outfile = os.path.join(new_dir, NEW_NAME)

    # Merge
    merge_files(infiles, outfile)

最终结果是,对于中的每个目录OLD_BASE,将在中创建一个同名目录NEW_BASE在每个NEW_BASE子目录中,merged.txt都会创建一个名为的文件,文件的相应内容位于相应OLD_BASE子目录中。

所以

<OLD_BASE>
    DIR_1
        FILE_1
        FILE_2
    DIR_2
        FILE_3
        FILE_4
        FILE_5
    DIR_3
        FILE_6

成为

<NEW_BASE>
    DIR_1
        <NEW_NAME> (=FILE_1 + FILE_2)
    DIR_2
        <NEW_NAME> (=FILE_3 + FILE_4 + FILE_5)
    DIR_3
        <NEW_NAME> (=FILE_6)

我知道您说过,文件的合并顺序并不重要,但这会按文件名的字母顺序(区分大小写)将它们合并,以防将来的观众感兴趣。如果确实不是,则可以删除sorted()包装功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

循环遍历子目录并在每个子目录中执行一个Perl脚本

来自分类Dev

如何使R从一个大目录下的多个子目录中读取文件?

来自分类Dev

如何使R从一个大目录下的多个子目录中读取文件?

来自分类Dev

Mod_rewrite可仅在多个子目录中请求的一个子目录中提供文件

来自分类Dev

如何根据文件大小将多个文件分离到一个子目录中?

来自分类Dev

将多个子目录中的多个文件合并为每个子目录的1个文件并删除原始文件

来自分类Dev

如何在Windows命令提示符下的一个命令中创建多个子目录?

来自分类Dev

什么是性能更好的-一个目录中有许多文件,或者每个子目录中有多个子目录?

来自分类Dev

CMake:将静态库从子目录链接到另一个子目录中的可执行文件

来自分类Dev

如何将文件从一个子目录移动到第一个子目录之外的另一个子目录?

来自分类Dev

将 css 文件从一个子目录复制到 CONTAINER BLOB 中的另一个子目录

来自分类Dev

如何访问在vb.net的另一个子目录中的一个子目录中声明的变量

来自分类Dev

如何将子目录中的文件链接到Shell脚本中的另一个子目录

来自分类Dev

从目录和所有子目录获取所有文件,但不包含一个子目录

来自分类Dev

如何通过终端在每个子目录中复制除一个文件以外的整个目录?

来自分类Dev

在每个子目录中查找比另一个文件新的文件

来自分类Dev

从所有子目录删除文件,保留一个子目录以外的文件夹结构

来自分类Dev

在每个子目录中创建一个文件,并将其路径写入其中

来自分类Dev

如何仅压缩多个子目录下的文件?

来自分类Dev

RewriteRule 1个子目录中的多个URL

来自分类Dev

RewriteRule在1个子目录中的多个URL

来自分类Dev

重命名多个子目录中的同名文件

来自分类Dev

Heroku部署一个子目录?

来自分类Dev

如何在多个子目录中按数字顺序执行同一组命令?

来自分类Dev

有没有一种方法可以递归地搜索嵌套的子目录并在每个子目录上执行命令?

来自分类Dev

如何在每个子目录中创建一个文本文件,以便该文本文件包含目录名称

来自分类Dev

如何获得每个子目录中与文件扩展名列表匹配的第一个文件?

来自分类Dev

如何将子目录移动到同一目录中的另一个子目录中?

来自分类Dev

如何在目录树中查找包含2到3个子目录的目录?

Related 相关文章

  1. 1

    循环遍历子目录并在每个子目录中执行一个Perl脚本

  2. 2

    如何使R从一个大目录下的多个子目录中读取文件?

  3. 3

    如何使R从一个大目录下的多个子目录中读取文件?

  4. 4

    Mod_rewrite可仅在多个子目录中请求的一个子目录中提供文件

  5. 5

    如何根据文件大小将多个文件分离到一个子目录中?

  6. 6

    将多个子目录中的多个文件合并为每个子目录的1个文件并删除原始文件

  7. 7

    如何在Windows命令提示符下的一个命令中创建多个子目录?

  8. 8

    什么是性能更好的-一个目录中有许多文件,或者每个子目录中有多个子目录?

  9. 9

    CMake:将静态库从子目录链接到另一个子目录中的可执行文件

  10. 10

    如何将文件从一个子目录移动到第一个子目录之外的另一个子目录?

  11. 11

    将 css 文件从一个子目录复制到 CONTAINER BLOB 中的另一个子目录

  12. 12

    如何访问在vb.net的另一个子目录中的一个子目录中声明的变量

  13. 13

    如何将子目录中的文件链接到Shell脚本中的另一个子目录

  14. 14

    从目录和所有子目录获取所有文件,但不包含一个子目录

  15. 15

    如何通过终端在每个子目录中复制除一个文件以外的整个目录?

  16. 16

    在每个子目录中查找比另一个文件新的文件

  17. 17

    从所有子目录删除文件,保留一个子目录以外的文件夹结构

  18. 18

    在每个子目录中创建一个文件,并将其路径写入其中

  19. 19

    如何仅压缩多个子目录下的文件?

  20. 20

    RewriteRule 1个子目录中的多个URL

  21. 21

    RewriteRule在1个子目录中的多个URL

  22. 22

    重命名多个子目录中的同名文件

  23. 23

    Heroku部署一个子目录?

  24. 24

    如何在多个子目录中按数字顺序执行同一组命令?

  25. 25

    有没有一种方法可以递归地搜索嵌套的子目录并在每个子目录上执行命令?

  26. 26

    如何在每个子目录中创建一个文本文件,以便该文本文件包含目录名称

  27. 27

    如何获得每个子目录中与文件扩展名列表匹配的第一个文件?

  28. 28

    如何将子目录移动到同一目录中的另一个子目录中?

  29. 29

    如何在目录树中查找包含2到3个子目录的目录?

热门标签

归档