2012-02-03 60 views
0

有没有一种简单的方法递归查找目录层次结构中所有文件,但没有具有不同扩展名的匹配文件?UNIX查找找不到配对的文件名

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

我想找到没有一个伴随.out文件.dat文件结尾的文件。

我有一个while循环来检查每个条目,但这是缓慢的长列表...

我使用GNU找到。

+0

你应该考虑问这个问题http://serverfault.com/ – BZink 2012-02-04 00:54:09

回答

1

也许是这样的?

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

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

+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 – user1186515 2012-02-04 00:43:37

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

谢谢amit_g,但我认为你的解决方案由于文件名中的空格而失败? – user1186515 2012-02-04 00:48:41

0

我有一堆花里胡哨的添加到第1方案,但是这是一个良好的开端,感谢...

发现。 -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