2012-02-03 57 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