我有一堆遵循这种结构的目录:
\directories\
|---\directory1\
| |---file1.txt
| |---file2.txt
|
|---\directory2\
| |---file1.txt
| |---file3.txt
|
|---\directory3\
| |---file4.txt
| |---file2.txt
我想合并目录和文件,这样就结束了:
\directories\
|---\directory1\
| |---file1.txt
| |---file2.txt
|
|---\directory2\
| |---file1.txt
| |---file3.txt
|
|---\directory3\
| |---file4.txt
| |---file2.txt
|
|---\mergeddata\
| |---file1.txt (from dir1 and dir2)
| |---file2.txt (from dir1 and dir4)
| |---file3.txt (from dir2)
| |---file4.txt (from dir3)
我对 bash 很糟糕,并且尝试了很多东西但是......没有得到任何好的结果。
期待一些帮助!
最佳答案
您没有说明您希望文件如何合并,或者以什么顺序合并。我会猜测“串联,目录 1 出现在目录 2 之前,目录 2 出现在目录 3 之前”?
下面的脚本展示了一种直接的方法来做到这一点,而不依赖于花哨的替换:
cd directories
mkdir mergeddata
for I in directory1 directory2 directory3 ; do # replace with your actual directory list
for F in "$I"/* ; do
B=$(basename "$F")
cat "$F" >> "mergeddata/$B"
done
done
编辑:我添加了一些引号,以防您的任何文件名以空格字符或其他不便的空格结尾。
关于linux - 使用 bash 合并目录和加入内部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082105/