find 顯示雙正斜線可以嗎?

find 顯示雙正斜線可以嗎?

這是一個錯誤嗎,當我find ./path/here/得到:

./path/here//foo
./path/here//bar

我知道find希望我指定不帶尾部斜杠的路徑,但它肯定可以檢測製表符完成留給我的路徑並相應地調整其輸出。有什麼理由不這樣做嗎?

答案1

從技術上講,這是一個錯誤,因為POSIX 狀態

層次結構中遇到的其他檔案的所有路徑名應由目前路徑操作數的串聯組成,<slash>如果目前路徑運算元不以 1 結尾,以及相對於路徑操作數的檔案名

雙斜線沒有任何區別,因此./path/here//foo./path/here/foo始終是同一個文件。 (如果雙斜線位於某些 Unix 變體的路徑開頭,那麼它確實會有所不同。如果您的雙斜線確實如此,那麼希望find特別對待這種情況。)

答案2

根據記錄,人們可能使用find some/dir/而不是的原因之一find some/dir是,何時some/dir實際上是一個目錄的符號鏈接,並且您確實希望find在該符號鏈接指向的目錄中查找文件。

但是,在這種情況下,有更好的選擇:

find -H some/dir

-H是一些 POSIX 實用程式(lscp、 ...)支援的選項,它告訴實用程式遵循作為參數傳遞的符號連結(只是那些,不要與/chmod混淆,這會導致遵循-L-followfind每一個符號鏈接,作為參數傳遞的符號鏈接,以及在目錄遍歷期間找到的符號鏈接)。

這在功能上仍然不等同於實際上不是目錄的find some/dir/情況。some/dir在這種情況下,find some/dir/將會失敗不是目錄錯誤同時find -H some/dir會列出該非目錄檔案。

相關內容