給定一個可以存在或不存在的文件路徑,如何在bash腳本中創建文件夾結構和文件?如何爲給定路徑創建文件夾結構和文件
實例運行我的腳本(腳本的名稱和文件路徑爲放慢參數傳遞):
./someTask.sh /folder/structure/file.html
我已經試過的mkdir但它創建一個名爲file.html過的文件夾。任何幫助將非常感激。
給定一個可以存在或不存在的文件路徑,如何在bash腳本中創建文件夾結構和文件?如何爲給定路徑創建文件夾結構和文件
實例運行我的腳本(腳本的名稱和文件路徑爲放慢參數傳遞):
./someTask.sh /folder/structure/file.html
我已經試過的mkdir但它創建一個名爲file.html過的文件夾。任何幫助將非常感激。
只是做了(不洙花哨),但簡單:
crfile() {
dir=$(dirname "$1")
mkdir -p "$dir" && touch "$1"
}
while read -r path; do
crfile "$path"
done << EOF
some.txt
./some.txt
../some.txt
.././some.txt
../other/some.txt
/some.txt
/sub/some.txt
/sub/../etc/some.txt
EOF
,或者如果你需要從man mkdir
縮短
crfile() { mkdir -p "$(dirname "$1")" && touch "$1"; }
:
-p創建中間目錄,需要。如果未指定此選項 ,則每個操作數的完整路徑前綴 必須已經存在。另一方面,如果指定了這個選項,如果作爲操作數給出的目錄已經存在,則報告 沒有錯誤。中間目錄通過當前umask修改的rwxrwxrwx(0777)的 權限位以及所有者的寫入和搜索權限 創建。
使用dirname
比使用參數替換嘗試修改路徑要好得多。閱讀更多Bash variable substitution vs dirname and basename
是的,如果你願意,可以添加--
- 如果你期望文件或目錄以-
開頭,這是很好的...
這是一個仍然非常短的解決方案,但不應導致根目錄中的相關文件或文件出現問題。
crfile()
{
[[ ! -e $1 ]] && mkdir -p -- "$1" && rmdir -- "$1" && touch -- "$1"
}
說明:
-p
選項來創建整個結構通過首先創建所需的目標作爲目錄,然後將其刪除並創建爲文件,父目錄路徑(永不提取)或相對路徑不再有特殊情況。
將使用mkdir只有在目錄結構,而不是文件名通過?然後只需觸摸文件。 – 123
您也可以使用install命令'install -Dm644/dev/null/folder/structure/file.html' – 123