如何列出(给定的两个目录),具有相同名称和相对路径的目录

  • 本文关键字:相对 路径 两个 何列出 linux bash find
  • 更新时间 :
  • 英文 :


对于选定的两个目录列出了树下的名称和相对路径的目录。请勿嵌套呼叫找到。

我什至不知道如何开始它。应该是一些循环或仅找到命令?

给定目录ab,这是查看它的另一种方式:

(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。固定第二次是读者的练习。(而不是在发现比赛时打印,而是将事件记录在数组中,然后在末端块中报告。)

相关内容

  • 没有找到相关文章

最新更新