din*_*ino 5 scripting duplicate directory macos
我有一个包含许多子目录的目录,并希望找到任何重复项。文件夹结构如下所示:
??? Top_Dir
??? Level_1_Dir
??? standard_cat
? ??? files.txt
??? standard_dog
? ??? files.txt
??? standard_snake
??? files.txt
??? Level_2_Dir
??? standard_moon
? ??? files.txt
??? standard_sun
? ??? files.txt
??? standard_cat
??? files.txt
??? Level_3_Dir
??? standard_man
? ??? files.txt
??? standard_woman
? ??? files.txt
??? standard_moon
??? files.txt
Run Code Online (Sandbox Code Playgroud)
通过上面的示例,我希望看到以下输出:
/top_dir/Level_1_Dir/standard_cat
/top_dir/Level_2_Dir/standard_cat
/top_dir/Level_2_Dir/standard_moon
/top_dir/Level_3_Dir/standard_moon
Run Code Online (Sandbox Code Playgroud)
我一直在搜索如何通过 bash 完成这项工作,但一无所获。有人知道这样做的方法吗?
小智 -1
这可以在 Ubuntu 上使用 bash 进行。它只匹配重复的目录,无论树中的深度如何。$() 中的部分通过计算 的最后一列中的重复项来构建以管道分隔的目录名称列表ls -l。这个以竖线分隔的列表是使用 grep 对所有目录的列表进行过滤的。另外,不考虑其他文件(不使用全字匹配等)
> ls -lR Top_Dir/ | grep -E $(ls -lR Top_Dir/ | grep ^d | rev | cut -d" " -f1 | rev | sort | uniq -d | head -c -1 | tr '\n' '|') | grep -v ^d | sed 's/://'
Run Code Online (Sandbox Code Playgroud)
Top_Dir/Level_1_Dir/standard_cat
Top_Dir/Level_2_Dir/standard_cat
Top_Dir/Level_2_Dir/standard_moon
Top_Dir/Level_3_Dir/standard_moon