【问题标题】:Shell script to create directories and files from a list of file names用于从文件名列表创建目录和文件的 Shell 脚本
【发布时间】:2015-01-20 07:48:18
【问题描述】:

我(仍然)不是 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

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

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

【问题讨论】:

    标签: list shell touch directory mkdir


    【解决方案1】:

    与往常一样,发布问题会让我结束问题...

    我找到了一个令人满意的解决方案,在 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
    

    这一行命令将:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      相关资源
      最近更新 更多