![](/img/trans.png)
[英]Combining two files in linux (or R) with duplicated with one common column
[英]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.