Bash命令查找名称相同但扩展名不同的文件

时间:2019-02-22 08:58:18

标签: linux bash command-line

我想查找与其他文件扩展名不共存的文件”,即所有没有相应.o文件的.c文件。 我尝试了find $HOME \( -name '*.c' ! -a -name '*.o' \),但确实可以。

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

  1. 查找所有文件的名称
  2. 带尾部扩展名(如果有)(假设仅在扩展名前使用点)
  3. 排序以将重复项分组
  4. 仅列出重复项

剩余的行列出了具有不同扩展名的文件

  this.questions.push('some-new-item');
        setTimeout(
          ()=>{
           const lastExpansionPanel:HTMLElement =   
           document.getElementsByTagName('mat-expansion-panel')
           [document.getElementsByTagName('mat-expansion-panel').length-1]
           .querySelector('mat-expansion-panel-header');

          lastExpansionPanel.click();
          }, 0
        );

如果您仅对扩展名 find yourdirectory -type f | sed 's#\..*##' | sort | uniq -d .c感兴趣,请相应地限制.o

find

事实证明,您实际上是想知道(并且从一开始就应该是您的问题):“如何查找没有.o文件的.c文件”

find yourdirectory -type f -name '*.c' -or -name '*.o' | sed 's#\..*##' | sort | uniq -d

最终grep将过滤仅在 left 文件(c文件)中的行