对于选定的两个目录列出了树下的名称和相对路径的目录。请勿嵌套呼叫找到。
我什至不知道如何开始它。应该是一些循环或仅找到命令?
给定目录a
和b
,这是查看它的另一种方式:
(cd a && find -type d ; cd ../b && find -type d) | sort | uniq -d
如果您只想列出顶级目录,则将grep
添加到管道中将删除所有子目录:
(cd a && find -type d ; cd ../b && find -type d) | sort | uniq -d | grep '^[^/]*/[^/]*$'
阅读略易于:
(cd a && find -type d ; cd ../b && find -type d)
| sort
| uniq -d
| grep '^[^/]*/[^/]*$'
步行第一个目录,记录所有子目录。步行第二次,任何时候都会发现比赛。这应该有效:
{ find a -type d; find b -type d; } |
awk '/^a/ { a[$NF]=$0 }
/^b/ {if( $NF in a) print $0,a[$NF]}' FS=/
请注意,如果在A中重复一个子目录的名称,则只会列出一次,如果在B中出现重复,则将为每个外观列出。要解决第一个问题,您可以简单地进行a[$NF]=a[$NF]":"$0
。固定第二次是读者的练习。(而不是在发现比赛时打印,而是将事件记录在数组中,然后在末端块中报告。)