2013-06-25 53 views

回答

6
for dir in $(ls); do 
    mkdir "$dir/new-dir" 
done 
3
find . -type d | xargs -I "{x}" mkdir "{x}"/new-dir 

如果你想將其降低到目錄的第一級使用

find . -maxdepth 1 -type d | xargs -I "{x}" mkdir "{x}"/new-dir 
0

不如只列出目錄,否則你可能會得到一堆錯誤,當它遇到一個文件,而不是目錄的

for dir in $(ls -d */); do mkdir "$dir/2015" done

+0

請不要解析ls'的'輸出。謝謝。 –

3

驚人的,這個問題從來沒有Ø btained一個理智的答案:

shopt -s nullglob 
for i in */; do 
    mkdir -- "${i}newdir" 
done 
  • 這是100%安全的文件名就搞笑符號(空格,通配符等)。
  • shopt -s nullglob這樣,如果沒有匹配項,glob會擴展爲無。
  • --mkdir標記選項結束(如果有一個名稱以連字符開頭的目錄,不會混淆mkdir試圖解釋它作爲一個選項)。

這會靜靜地忽略隱藏的目錄。如果您需要在隱藏的目錄執行此操作,只需通過以下替換行shopt -s nullglob

shopt -s nullglob dotglob 

dotglob從而使水珠也考慮隱藏的文件/目錄。

如果你想的mkdir只有一個調用:

shopt -s nullglob 
dirs=(*/) 
mkdir -- "${dirs[@]/%/newdir}" 
+0

令人驚訝,我也得到了downvoted!憤怒的downvoters,請留下一張紙條,謝謝。 –

相關問題