Touch

如何為樹上的每個目錄創建一個文件?

  • March 26, 2022

對於以下樹結構:

   .
└── dir1
   └── dir2
       └── dir3

為每個目錄創建文件(可能為空)的簡單方法是什麼,因此生成的樹將如下所示:

.
├── dir1
│   ├── dir2
│   │   ├── dir3
│   │   │   └── README
│   │   └── README
│   └── README
└── README

你可以用 find 做到這一點:

find . -mindepth 1 -type d -exec touch "{}/README" \;

解釋

  • -mindepth 1將設置最小深度,避免包括目前目錄
  • -type d只會找到目錄
  • -exec將執行一個命令
  • {}包含找到的目錄的路徑

如果您只想使用內置的 shell 命令:

for dir in *; do if [ -d "$dir" ]; then touch "$dir/README"; fi; done

解釋

  • for將遍歷 中的每個元素*,即目前目錄中的所有文件。dir將在循環期間包含目前元素。
  • if [ -d $dir ]檢查元素是否是目錄,然後才檢查
  • README在包含的目錄名稱中創建一個名為的文件$dir

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