Bash

如何在所有子目錄中創建目錄?

  • May 8, 2015

假設我有一個這樣的目錄結構:

$ [~ / 練習] ls
A B C D/

現在我想tmp1在所有子目錄中創建一個目錄practice,我這樣做:

$ [~/practice] mkdir */tmp1
mkdir: 無法創建目錄 `*/tmp1': 沒有這樣的文件或目錄

然後我嘗試-p切換,最終得到一個以子目錄命名*的目錄tmp1

$ [~/practice] mkdir -p */tmp1

$ [~ / 練習] ls
*/ A B C D/

我知道-pswitch 的用途是創建多個不存在的目錄。我只是認為它可能會有所幫助。

如何tmp1一次在所有子目錄中創建?

如果可以做到這一點,我如何將其擴展為 create 、\tmp1\tmp2in\tmp3\a一次?\b``\c

**編輯:**我錯過了提到目錄不必簡單有序,如a,bc,並且要創建的目錄不一定如tmp1, tmp2

$ [~ / 練習] ls
狗/貓/鼠/

在他們身上,我想有類似的東西

$ [~ / 練習] ls *
狗:
紅藍/

貓:
紅藍/

鼠:
紅藍/

帶球:_

for dir in */; do mkdir -- "$dir/tmp1"; done

筆記

  • 我只處理 dirs(包括到 dirs 的符號連結),並使用*/作為 glob的小技巧
  • 如果要一次創建多個子目錄:

for dir in */; do mkdir -- "$dir"/{tmp1,foo,bar,qux}; done

$$ … $$如何擴展它以同時在 \a、\b 和 \c 中創建 \tmp1、\tmp2、\tmp3?

mkdir {a,b,c}/tmp{1,2,3}

引用自:https://unix.stackexchange.com/questions/61907