2011-10-12 69 views
0

程序應該找到一個文件並返回它是否存在於系統中,現在我發現應該使用find命令,但是因爲這樣命令將啓動的代碼(使用系統)我需要將結果保存在一個文件中,並嘗試在終端上,我不能得到它的工作,結果不會出現在該文件中,我試圖:無法將查找命令的結果保存在文件中 - 文件爲空

find/-name 'test2abc' 2>/dev/null -> res 

文件res是空的。如何做到這一點?

還有一個更好的方法來做到這一點,如果文件存在,我應該使用stat命令打印文件的細節。有沒有辦法使用juts stat命令來搜索子文件夾中的文件?

+0

如果你只是想要統計文件,看看'find'的'-exec'參數。 – derobert

+0

爲什麼在這個問題上有一個offtopic近距離投票????????? – SpeedBirdNine

回答

4

-> res部分只應該是> res

如果您嘗試這樣的命令,在命令行:

find/-name 'test2abc' -> res 

將打印錯誤:

find: paths must precede expression: - 

-沒有任何有效的重定向的一部分,因此給予find哪些也不能解釋它。

明智的是不要壓制錯誤消息。一個簡單的方法可以既重定向stderr和標準輸出到文件是這樣的:

find/-name 'test2abc' > res 2>&1 

然後對-錯誤本來在文件中直接從你,你會知道什麼`錯了非常快的開始。

+0

它工作正常,非常感謝。但是爲什麼 - > res在這種情況下不起作用? – SpeedBirdNine

+1

@SpeedBirdNine:' - >'不是shell寫入重定向的方式,'>'是。所以'-'被傳遞給查找作爲參數,這是產生一個錯誤(或者,如果你沒有將stderr重定向到/ dev/null) – derobert

+1

@SpeedBirdNine我增強了這篇文章。好? –

相關問題