2015-12-07 44 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

相關問題