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

时间:2017-06-23 13:01:22

标签: linux shell

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

3 个答案:

答案 0 :(得分:1)

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

cat <directory>/*/* >> <resulting_file>

答案 1 :(得分:0)

使用find命令,您可以使用它来限制目录路径/文件类型,修改时间等。 find命令用于默认递归搜索(即)从目录开始直到树的最后一个子节点。

在您的情况下,我假设您正在寻找任何文件。你可以这样做。

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文件等,您可以添加如下所示的过滤器。

find /path -type f -name *.log > listoflogfiles

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

答案 2 :(得分:0)

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

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]