使用“touch”创建目录 - 递归创建目录的“影子”副本

Lan*_*nes 3 linux bash

  1. 在“A”目录中: find . -type f > a.txt
  2. 在“B”目录中: cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done

结果:第 2 步“创建文件”(我的意思是仅具有相同的文件名,但大小为 0 字节)但如果“A”目录中有子目录,则第 2 步无法在子目录中创建文件,因为里面没有目录。

问题:有没有办法,“触摸”可以创建目录?

m.s*_*.sr 8

快速拍摄:

while read FILENAME
do
  mkdir -p $(dirname "$FILENAME") && touch "$FILENAME"
done < a.txt
Run Code Online (Sandbox Code Playgroud)

请注意文件/路径名等中的特殊字符(空格,...)...

  • 那么您还需要在 $(...) 替换周围使用双引号,以防止结果的空格分割,并且应该弄清楚如何处理嵌入在文件名中的换行符。find 的 -print0 并使用支持读取使用 NUL 分隔符的外壳可能会有所帮助。 (2认同)