2015-12-07 45 views
0

我有几个文件夹的文件。文件可以具有相同的名称。我想将文件连接成每个名称之一。提前致谢。如何合并所有子目录中具有相同名称的文本文件?

编辑: 对不起,你可以告诉我批处理文件。

+0

我很抱歉,我没有看到窗口的标签,我一无所知窗口。我很确定'ls'仍然可以工作,也可能'cat',但是如果你可以做perl,那么你需要做一些类似'ls -r A | perl -e'system(“cat $ 0 >>”B /“+ m | /(.*)$ |”)'' – rudolfovic

+0

我实际上并没有使用Perl,因此我不确定这个确切的代码段是否工作正常,但是解决方案确实很简单,通过搜索如何执行单个操作(匹配正则表达式,执行简单的perl操作),您可以很容易地了解这一点 – rudolfovic

+1

是否所有文件夹都位于相同的根目录中?是否有任何特定的排序顺序来连接文件?或许可以使用'/ R',再加上重定向'>>'... – aschipfl

回答

1

merge.bat

@echo off 
# for every text file in 
# the sub-dirs of current dir 
for /r "." %%a in (*.txt) do (
    # filename without path and extension 
    echo %%~na 
    # read file and append it to file with 
    # the same name prefix in current dir 
    type %%a >> %%~na-merged.txt 
) 

merge_all_in_one.bat

@echo off 
for /r "." %%a in (*) do (
    type %%a >> all_merged.txt 
) 
1

这很简单—你已经写每个文件到同一个目录,确保你正在追加。这并不能保证任何顺序的偏好,所以我认为这是不相关的。你没有指定一种语言,或者这是否适用于shell,所以我不能建议实现(还)。

此问题可以分解为以下任务。首先你需要一个所有文件的列表。如果你是“编程”的话,可以用ls -r或者一些PL特定的方法来完成。然后,你需要找出每个文件路径,在哪里写,这涉及到一个正则表达式,甚至可能是“/”分裂。那么你只是想读取和附加从A到B的每个文件,就是这样。要么使用cat a >> b,要么使用您正在使用的任何语言库。

+0

这个问题可以分解为以下几个任务。首先你需要一个所有文件的列表。如果你是“编程”的话,可以用'ls -r'或者一些特定的PL来完成。然后你需要找出每个文件路径,在哪里写,这涉及到一个正则表达式,或者甚至可能在'“/”'上分割。那么你只是想读取和附加从A到B的每个文件,就是这样。或者用'cat a >> b'或者用你正在使用的任何语言库。 – rudolfovic

相关问题