首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从路径的子目录中读取文件并将它们附加到一个文件中

从路径的子目录中读取文件并将它们附加到一个文件中
EN

Stack Overflow用户
提问于 2017-06-23 13:01:21
回答 3查看 285关注 0票数 0

我有一个包含20个子文件夹的文件夹,每个子文件夹包含一个文件。我想从子文件夹中读取所有的20个文件,并将它们附加到另一个文件中。我该怎么做?这方面有什么awk命令吗?无论是python/perl脚本还是linux命令都非常有用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-23 13:07:43

最简单的方法可能是(除非您需要比文件内容更多的信息):

代码语言:javascript
代码运行次数:0
运行
复制
cat <directory>/*/* >> <resulting_file>
票数 1
EN

Stack Overflow用户

发布于 2017-06-23 13:23:25

使用find命令,您可以使用该命令限制目录路径/文件类型、修改次数等,默认情况下,find命令用于递归搜索(即从目录到树的最后一个子目录)。

在你的情况下,我想你只是在找任何文件。你可以按下面的方式做。

代码语言:javascript
代码运行次数:0
运行
复制
find <PATH from where to search> -type f > log file # adding filters that you are looking for files.
Ex: find /users/hero/parent -type f > listoffiles.log

如果您正在查找任何特定类型的文件,如日志文件(或)c文件等,则可以添加如下所示的筛选器。

代码语言:javascript
代码运行次数:0
运行
复制
find /path -type f -name *.log > listoflogfiles

注意:默认情况下,查找执行递归搜索。希望这会有所帮助:)

票数 0
EN

Stack Overflow用户

发布于 2017-06-23 13:32:02

使用python(3),您可以使用以下代码:它首先打开新的target_file,然后打开每个source_file并将其内容写入target_file。

代码语言:javascript
代码运行次数:0
运行
复制
import os

path_with_subdirs = '/dir/with/subdirectories'

source_files = [os.path.join(dp, f) for dp, dn, filenames in os.walk(path_with_subdirs) for f in filenames]

target_file = '/target/location/output_file.txt'

with open(target_file, 'w') as target:
    for source_file in source_files:
        with open(source_file, 'r') as source:
            [target.write(line) for line in source]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44722127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档