UNIX查找用于查找未配对的文件名

时间:2012-02-03 01:40:36

标签: unix find

是否有一种简单的方法可以递归查找目录层次结构中没有匹配文件且扩展名不同的所有文件?

例如,目录中有一堆以.dat

结尾的文件

我想找到没有附带的.out文件的.dat文件。

我有一个while循环检查每个条目,但对于长列表来说这很慢......

我正在使用GNU find。

3 个答案:

答案 0 :(得分:1)

也许是这样的?

find . -name "*.dat" -print | sort > column1.txt
find . -name "*.out" -print | sort > column2.txt
diff column1.txt column2.txt

我还没有测试过,但我认为这可能与你所要求的相近。

答案 1 :(得分:1)

find . -name '*.dat' -printf "[ -f %p ] || echo %p\n" | sed 's/\.dat/.out/' | sh

答案 2 :(得分:0)

我必须在第一个解决方案中加入一堆铃声和口哨,但这是一个好的开始,谢谢...

找到。 -print | grep -Fi'.dat'| grep -vFi'.dat。' |排序| sed -e's / .dat // g'> column1.txt
  找 。 -print | grep -Fi'.out'| grep -vFi'.out。' |排序| sed -e's / .out // g'> column2.txt
  sdiff -s column1.txt column2.txt | grep -F'<' | cut -f1 -d“<” > c12diff.txt