Bash - 将文件合并到单独的子文件夹中

问题描述 投票:0回答:2

所以我正在寻找一种方法来捕获多个子文件夹中的.html文件,但要将它们保留在原位。

实际情况:

$ Folder1
.
├── Subfolder1
│   └── File1.html
    └── File2.html
├── Subfolder2
│   └── File1.html
    └── File2.html

期望的结果:

$ Folder1
.
├── Subfolder1
│   └── Mergedfile1.html
    └── File1.html
    └── File2.html
├── Subfolder2
│   └── Mergedfile2.html
    └── File1.html
    └── File2.html

到目前为止,我已经想出了这个:

find . -type f -name *.html -exec cat {} + > Mergedfile.html

但是这组合了Folder1的所有子文件夹的所有文件,而我希望将它们分开。

非常感谢!

bash macos terminal
2个回答
0
投票

就像AK_告诉的那样,你可以使用find与exec。

find Folder1/ -mindepth 1 -maxdepth 1 -type d -exec sh -c "rep='{}';cat "'"$rep"'"/*.html > "'"$rep"'"/Mergedfile.html" \;

1
投票

您可以使用for语句循环所有子文件夹:

for i in Folder1/SubFolder*; do
   cat "$i"/File*.html > MergeFile$(echo "$i" | sed 's,.*\([0-9]\+\)$,\1,').html
done
© www.soinside.com 2019 - 2024. All rights reserved.