6
A
回答
15
你有沒有想過嘗試以下方法?
if (! -d $filename) ...
的-d
結果是,畢竟,這東西可以被視爲一個布爾值,因此邏輯非運算符!
將正常工作。
而且,如果您之後更具體比「不是目錄」,請參閱here。有相當多的東西不是目錄,有時候把它當作普通文件是沒有意義的。
請記住,假設您已經驗證文件名存在。如果您使用不存在的文件名執行! -d
,它將返回true。
這是一個哲學的事,你是否考慮一個不存在的東西是「不是一個目錄」,但是,如果你想確保它的存在,以及,你可以結合使用! -d
與-e
,是這樣的:
if ((-e $filename) && (! -d $filename)) ...
2
-f
運算符測試以查看是否有「常規文件」。這不包括目錄,但也排除了諸如管道和設備節點之類的東西。
if (-f $filename) { ...
3
5
爲了測試某個東西是一個文件,而不是一個目錄,則需要簡單地將兩個測試(沒有單一的測試):
if (-e $file && !-d $file) { # a file but not a directory }
請注意:
在所有應有的尊重,paxdiablo的答案是錯誤的問題措辭的方式(純粹
!-d
不適用於什麼用戶問,因爲它檢查如果一個隨機的東西/字符串不是一個目錄,而不是一個文件是什麼不是一個目錄)。例如。!-d NO_SUCH_FILE
返回true。格雷格的回答可能是正確的,這完全取決於原始用戶是否意圖在「非目錄文件」的定義中包含非純文件(例如符號鏈接,命名管道等)。如果他們打算包括所有這些特殊的「檔案」,格雷格的回答也是錯誤的,因爲「-f」排除了他們(正如Greg首先在他的回答中明確指出的那樣)。
相關問題
- 1. 在Perl中,如何測試字符串是否是迴文?
- 2. 單元測試/測試如果文件中存在函數
- 3. pytest:在測試文件,而不是conftest.py
- 4. Perl:測試遠程文件是否存在http
- 5. 如何在測試運行中包含多個(但不是全部)Perl測試文件?
- 6. Perl自動化文件測試
- 7. perl文件測試運算符和「$ _」
- 8. 如果我不知道確切的文件路徑,Perl如何檢測文件?
- 9. 從Perl測試文件中,如何檢查文件的內容?
- 10. 測試makefile目標文件是否存在,如果不存在則退出
- 11. 測試如果對象是零或不
- 12. 測試如果數組不是numpy的
- 13. 在perl中運行測試文件(.t文件)時出錯
- 14. Powershell測試如果文件夾爲空
- 15. 如果測試導入模擬文件
- 16. 如果把外部文件testthat測試
- 17. 測試遠程文件如果目錄
- 18. Perl的測試套件API
- 19. Perl:測試是否存在類
- 20. 在測試casperjs文件時不顯示'測試文件:XXX.js'
- 21. 測試,如果一個文件夾中存在或不是谷歌驅動
- 22. 如何測試字符串是否在文件中不存在
- 23. 測試,如果模具是在python
- 24. 測試,如果對象是在對象
- 25. Perl - Test :: Unit :: Lite,如何在測試文件中使用多個文件夾
- 26. 開發Perl和測試Perl
- 27. 爲什麼文件測試運算符不起作用(Perl)?
- 28. 在Perl測試文件中只運行一個命名測試用例
- 29. perl的測試,如果象徵功能名稱存在
- 30. 檢測文件是否重複,如果不是,則重命名
可能的重複[如何區分一個文件與Perl目錄?](http://stackoverflow.com/questions/206320/how-do-i-distinguish-a-file-from- a-directory-in-perl) –
規範的堆棧溢出問題是* [如何區分一個文件與Perl目錄?](http://stackoverflow.com/questions/206320)*。 –