Shell脚本,用于从文件名列表中创建目录和文件

时间:2015-01-20 07:48:18

标签: list shell touch directory mkdir

我(仍)不是shell向导,但我正在尝试从文件名列表中创建目录和文件。

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

README.md
foo/index.html

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

foo/baz/README.md

我将使用此命令删除空行并修剪无用的空格:

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

它会给我这个清单:

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

现在我正在尝试遍历每一行并创建相关文件(它不存在),并使用它的父目录。

我怎么能这样做?
理想情况下,我会将此脚本放在别名中以快速使用它。

1 个答案:

答案 0 :(得分:1)

与往常一样,发布问题会让我走到问题的最后......

我在dirname循环中使用basenamefor .. in找到了令人满意的解决方案:

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

这个单行命令将:

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