gpt4 book ai didi

linux - 合并不同文件夹中的同名文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:53 26 4
gpt4 key购买 nike

我是 Linux 的新手,我正在寻找一个命令来合并具有相同名称但来自不同文件夹的文件。像这样:

folder 1, folder l1

folder 1 contains folder 2 and files 1.txt, 2.txt, 3.txt, ...

folder 2 contains files 1.txt, 2.txt, 3.txt, ...

我想合并文件夹 1 和子文件夹 2 中的两个文本,然后将它们放入文件夹 l1 中。

我明白了:

    ls ./1 | while read FILE; do

cat ./1/"$FILE" ./1/2/"$FILE" >> ./l1/"$FILE"

done

这个看起来运行良好,合并了两个文件,但是,在文件夹 l1 中创建了一个新的空文件 2,并且在 shell 上显示了两条警告消息:cat: ./1/2: 是一个目录cat: ./1/2/2: 没有那个文件或目录

我想知道新文件2的解释和警告信息,更重要的是如何改进命令行或新的解决方案,因为我有几十个文件夹1。

最佳答案

您的代码看起来还不错。它发出警告是因为您也在尝试合并目录!您可以添加一个检查以跳过目录,如下面的代码:

#!/bin/bash

cd 'folder 1'
for file in *.txt; do
[[ ! -f $file ]] && continue # pick up only regular files

otherfile="folder 2/$file"
[[ ! -f $otherfile ]] && continue # skip if there is no matching file in folder 2
cat "$file" "$otherfile" > "folder l1/$file.merged"
done

重要的是要引用上面的变量以防止word splitting .

关于linux - 合并不同文件夹中的同名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com