在Perl中,如何創建子目錄並同時創建父目錄(如果它們不存在)?像UNIX的mkdir -p命令一樣?從文件::路徑模塊如何在一個Perl命令中創建目錄和父目錄?
回答
use File::Path qw(make_path);
make_path("path/to/sub/directory");
棄用的mkpath和首選make_path從討論梗在Perl 5名搬運工跟帖說已經封存here。
簡而言之,Perl 5.10測試在makepath()接口的參數分析中出現了尷尬。所以它被替換爲一個簡單的版本,它將散列作爲設置函數選項的最終參數。
@skiphoppy:這仍然不是「像UNIX的mkdir -p命令」,如問題中所述。 mkdir的手冊頁顯示 -p, --parents no error if existing, make parent directories as needed
但是如果目錄存在,make_path將返回false。 (即,make_path「/ tmp/foo」或die;#如果/ tmp/foo存在,將會死亡) –
Randall
2011-05-17 16:48:31
使用mkpath:
use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
剛纔研究了這一點,我發現mkpath()已被棄用,官方界面現在是make_path()。如果有人就我們購買的產品寫了一個很好的解釋,我會將其作爲公認的答案。 – skiphoppy 2009-06-26 17:52:00
裁判http://perldoc.perl.org/File/Path.html
「的make_path函數創建指定的目錄,如果他們不存在[原文如此!]之前,很像Unix命令mkdir -p
」
,如果你正在尋找一個Perl的請無視用「的mkdir -p」的功能,但下面的代碼模塊將工作:
my $dir = '/root/example/dir';
system ("mkdir -p $dir 2> /dev/null") == 0
or die "failed to create $dir. exiting...\n";
您可以使用一個模塊,但你必須給你要你的代碼移植在每臺服務器上安裝它。我通常更喜歡使用系統函數來處理像mkdir這樣的工作,因爲當我僅需要一次創建目錄時,導入和調用模塊的開銷較小。
如果您想避免安裝模塊,那麼這種方法是有意義的。我通常更喜歡要求安裝我需要的模塊,或者我拒絕支持該系統。 :)我更喜歡使用模塊,因此我可以從測試和研究中獲益,因此可以避免錯誤,例如無法檢查系統調用或丟失錯誤消息的輸出,並且因爲沒有錯誤創建一個流程。 – skiphoppy 2012-09-17 14:48:11
- 1. 如何在Perl中創建一個目錄內容的數組?
- 2. 如何在Perl中創建一個目錄?
- 3. 一個命令來創建和更改目錄
- 4. 我可以刪除目錄,然後在單個命令中創建目錄嗎?
- 5. mkdir無法在perl中創建目錄
- 6. 是否可以在同一命令上創建多個目錄?
- 7. 如何知道php創建一個目錄和另一個目錄內
- 8. 一個命令在裏面創建一個目錄和文件linux commad
- 9. 在當前目錄的父目錄中創建新的目錄 - ROR FileUtils.mkdir
- 10. 使用Windows命令行在每個目錄下創建子目錄
- 11. 我如何創建一個目錄?
- 12. 如何創建一個隱藏目錄
- 13. 如何用Maven2在目標中創建一個子目錄
- 14. 如何在Django項目中創建一個「addons」目錄?
- 15. 創建一個目錄
- 16. 如何在Node.js中的當前目錄中創建一個目錄
- 17. 在bin文件夾以外的Perl中創建一個目錄
- 18. 創建一個默認的命令提示符目錄
- 19. PHP警告命令mkdir():不是一個建立在目錄目錄
- 20. 創建目錄+子目錄
- 21. 如何使用單個命令在hadoop中創建多個目錄?
- 22. 腳本創建一個父目錄的tar,它的子目錄中有個別的tar目錄
- 23. 創建下使用單個命令所有目錄的新目錄:Linux的
- 24. 在OCaml的父目錄中創建一個文件?
- 25. 如何在perl中查找兩個父目錄?
- 26. 如何使用Linux命令將一個目錄複製到多個目錄?
- 27. 如何在當前工作目錄中創建一個目錄,使用Java
- 28. 如何更改目錄並在該目錄上運行命令?
- 29. 如何從構建目錄中的src目錄中創建?
- 30. 如何在當前目錄和子目錄中對文件使用head命令?
添加了此問題,以便我將來能夠輕鬆再次找到它,而不是每次都查看它。由於某種原因,我總是在POSIX.pm查找這個。 – skiphoppy 2009-06-26 17:50:57