如何在linux中比较两个ls的输出

zwx*_*zwx 4 unix linux awk sed

所以这是我无法解决的任务.我有一个带.h文件的目录和一个带有.i文件的目录,它们与.h文件的名称相同.我只想输入一个命令,将所有.h文件找不到.i文件.这不是一个难题,我可以用一些编程语言来做,但我只是好奇它在cmd :)中会是什么样子.这里更具体的是算法:

  • 从ls*.h获取没有扩展名的文件名
  • 从ls*.i获取没有扩展名的文件名
  • 比较它们
  • 打印1中未满足的所有名称

祝好运!

Ama*_*dan 5

diff \
  <(ls dir.with.h | sed 's/\.h$//') \
  <(ls dir.with.i | sed 's/\.i$//') \
| grep '$<' \
| cut -c3-
Run Code Online (Sandbox Code Playgroud)

diff <(ls dir.with.h | sed 's/\.h$//') <(ls dir.with.i | sed 's/\.i$//')ls在两个目录上执行,切断扩展,并比较两个列表.然后grep '$<'查找仅在第一个列表中的文件,并cut -c3-切断插入的"< "字符diff.