gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:01 24 4
gpt4 key购买 nike

我想找到不与另一个文件扩展名共存的文件”,即所有没有相应 .o 文件的 .c 文件。我试过 find $HOME\( -name '*.c' ! -a -name '*.o'\) 但它确实有效。

最佳答案

您可以执行以下操作:

  1. 查找所有文件的名称
  2. 如果有尾随扩展名(假设仅在扩展名前使用点)
  3. 对重复项进行排序
  4. 仅列出重复项

剩下的行列出了以不同扩展名出现的文件

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

如果您只对扩展名 .c.o 感兴趣,则相应地限制 find

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

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

find yourdir -name '*.c' | sed 's#..$##' | sort > c-files
find yourdir -name '*.o' | sed 's#..$##' | sort > o-files
diff c-files o-files | grep '^<'

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

关于linux - Bash命令查找具有相同名称但扩展名不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com