Shell 从文件名列表创建目录和文件的脚本

Shell script to create directories and files from a list of file names

我(仍然)不是 shell 向导,但我正在尝试找到一种从文件名列表创建目录和文件的方法。

我们以这个源文件(source.txt)为例:

README.md
foo/index.html

  foo/bar/README.md
foo/bar/index.html

foo/baz/README.md

我将使用此命令删除空行和 trim 无用空格:

$ more source.txt | sed '/^$/d;s/^ *//;s/ *$//'

它将给我这个列表:

README.md
foo/index.html
foo/bar/README.md
foo/bar/index.html
foo/baz/README.md

现在我试图在每一行上循环并创建相关文件(它尚不存在),以及它的父目录。

我该怎么做?
理想情况下,我会把这个脚本放在一个别名中以便快速使用它。

一如既往,发布问题会让我结束问题...

我找到了一个令人满意的解决方案,在 for .. in 循环中使用 dirnamebasename

for i in `cat source.txt | sed '/^$/d;s/^ *//;s/ *$//'`; 
  do mkdir -p `dirname $i`; 
     touch `echo $(dirname $i)$(echo "/")$(basename $i)`; 
  done

这一行命令将:

  • 读取文件名列表
  • 创建目录
  • 在自己的目录中创建空文件