簡體   English   中英

在Linux中組合不同文件夾中的兩個文件

[英]Combining two files in different folders in Linux

我有兩組文件夾,其文件具有相同的文件名和結構 文件夾結構是這樣的:

\outputfolder\
 |---\folder1\
 |      |---file1.txt
 |      |---file2.txt
 |
 |---\folder2\
        |---file1.txt
        |---file2.txt

所以我需要做的是將這些文件夾中的所有文件(file1.txt與file1.txt等)組合(附加)到outputfolder中的另一個文件中。 獲取這些組合文件后,我還需要從所有這些組合文件中創建tar.gz文件。

如何在基於Linux的命令行環境中完成此操作? 文件夾名稱(folder1和folder2等)是可變的,因此需要給出但文件不需要,它應自動組合所有具有相同名稱的文件。

此外,這些文件具有列名稱的標題,因此我還需要在追加時刪除它。

這里有一些代碼可以幫助您入門

topdir=outputfolder
dir1=folder1
dir2=folder2

for f in $topdir/$dir1/*.txt
do
    outf=$topdir/`basename $f .txt`-concat.txt
    cp $f $outf
    sed -e '1 d' $topdir/$dir2/`basename $f` >> $outf
done

tar czf foo.tar.gz $topdir/*-concat.txt

編輯:添加刪除第二個文件頭的部分。

find . -name 'file1.txt' | xargs cat >file1_concat.txt

即使僅在folder1中有一些文件而在folder2中只有一些文件,這也可以工作:

concat_files() {
  for dir in "$@"; do
    for file in "$dir"/*; do 
      this=$(basename "$file")
      { [[ -f "$this" ]] && sed 1d "$file" || cat "$file"; } >> "$this"
    done
  done
  tar zcvf allfiles.tar.gz *
}

concat_files folder1 folder2

如果您的串聯作業有兩個以上的文件夾,它將起作用。

我假設你想在生成的文件中保留標題。

你試過cat命令(連接)嗎?

cat file1 file2 >> outputfile

可能想在一個小的bash腳本中查看它來瀏覽目錄。 這應該讓你開始。

祝你好運。 獅子座

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM