linux - Bash 命令以查找通用文件名并对其内容进行分类
问题描述
您好,我有 3 个目录,例如:
/path1/path2/pathA/path4/
1_to_45.txt
ABC
1_to_46.txt
DEF
1_to_47.txt
GHI
/path1/path2/pathB/path4/
1_to_45.txt
JKL
1_to_48.txt
MNO
1_to_47.txt
PQR
/path1/path2/pathC/path4/
1_to_45.txt
STW
1_to_49.txt
XYZ
1_to_47.txt
AUI
1_to_41.txt
IOP
我想将 3 个目录之间共有的所有文件包含到目录中,并创建与 comme文件名Merged_directory
相同的文件
,因此例如 3 个目录之间有两个共同文件:
/path1/path2/Merged_directory
1_to_45.txt
ABC
JKL
STW
1_to_47.txt
GHI
PQR
AUI
有人有想法吗?
解决方案
循环遍历一个目录中的文件名。检查其他两个目录中是否也存在相应的名称。如果是这样,请将它们全部放入合并目录中。
dir1=/path1/path2/pathA/path4
dir2=/path1/path2/pathB/path4
dir3=/path1/path2/pathC/path4
merged=/path1/path2/Merged_directory
for file in "$dir1"/*.txt
do
fn=${file##*/}
if [ -f "$dir2/$fn" ] && [ -f "$dir3/$fn" ]
then
cat "$fn" "$dir2/$fn" "$dir3/$fn" > "$merged/$fn"
fi
done
推荐阅读
- angular - 创建带参数的装饰器并访问被装饰的函数参数
- javascript - 删除 div 折叠时的链接文本?
- reactjs - NextJS:如何从 url 导航到自定义路径?
- android - 无法将 java.lang.string 类型的对象转换为 Friends 类型
- python - 如何在 PyQt5 的窗口内调整 QWebEnginePage 的大小?
- java - cPanel 中 EasyApache 上的 Tomcat 突然停止工作,在所有页面上抛出 404
- android - 广播重负载时的最佳做法是什么?
- autodesk-forge - 无法为大型模型提取对象树
- c++ - 在不应实例化的模板函数中报告错误
- laravel - 具有多个 where 条件的 Laravel 动态查询