【问题标题】:How to merge text files with the same name from all subdirectories?如何合并所有子目录中同名的文本文件?
【发布时间】:2015-12-07 23:59:51
【问题描述】:

我有几个包含文件的文件夹。文件可以具有相同的名称。我想将文件连接到每个名称中的一个。提前致谢。

编辑: 对不起,你能给我看看它的批处理文件吗?

【问题讨论】:

  • 很抱歉我没有看到 windows 标签,我对 windows 一无所知。我很确定ls 仍然有效,可能cat 也可以,但是如果您可以执行 perl on 那么您需要可以执行类似ls -r A | perl -e 'system("cat $0 >> "B/" + m|/(.*)$|")'
  • 我实际上并没有使用 Perl,所以我不确定这个确切的 sn-p 是否有效,但解决方案绝对是那么简单,并且通过搜索如何执行单个操作(匹配正则表达式,执行简单的 perl 事情)你可以很容易地解决这个问题
  • 所有文件夹都在同一个根目录下吗?是否有任何特定的排序顺序来连接文件?也许可以使用for /R,以及重定向>>...

标签: windows file batch-file merge


【解决方案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
)

【讨论】:

    【解决方案2】:

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

    这个问题可以分解为以下任务。首先,您需要一个所有文件的列表。如果您正在“编程”,可以使用ls -r 或某些 PL 特定方式来完成此操作。然后,您需要确定每个文件路径、写入位置以及涉及正则表达式甚至可能是“/”上的拆分​​。然后,您只想读取并将每个文件从 A 附加到 B,仅此而已。使用cat a >> b 或您正在使用的任何语言库来执行此操作。

    【讨论】:

    • 这个问题可以分解为以下几个任务。首先,您需要一个所有文件的列表。如果您正在“编程”,这可以通过ls -r 或一些特定于 PL 的方式来完成。然后,您需要确定每个文件路径、写入位置以及涉及正则表达式甚至可能是"/" 上的拆分。然后,您只想读取并将每个文件从 A 附加到 B,仅此而已。使用cat a >> b 或您正在使用的任何语言库来执行此操作。
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2023-01-04
    相关资源
    最近更新 更多