使用“触摸”来创建目录?

使用“触摸”来创建目录?

1) 在“A”目录中:

find . -type f > a.txt

2) 在“B”目录中:
cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done

3)
结果:2)“创建文件” [我的意思是只使用相同的文件名,但大小为 0 字节] 成功。但如果“A”目录中有子目录,则 2) 无法在子目录中创建文件,因为其中没有目录。

问题:有没有办法让“touch”创建目录?

答案1

您希望的最终结果是什么?

如果您尝试复制目录结构,有更简单的方法。首先想到的是同步解决方案。

例如

rsync -a /源/目录/ /目标/目录/ --include \*/ --exclude \*

这将重新创建整个目录结构。然后您可以运行 touch 命令来完成其余操作。

正如前面提到的,如果我们知道整个问题,我们也许能够找到更优雅的解决方案:)

答案2

你可以使用这个脚本。你需要使用chmod +x scriptname

#!/usr/bin/env ruby
# touchMakingDirs: a Ruby script to be able to touch a file and optionally create the directories necessary
# by Dan Rosenstark 2013-03-18 
if __FILE__ == $0
  if ARGV.length == 0
    puts "Sorry, include one argument for filename"
    exit
  end

  filename = ARGV[0]
  puts "Will touch file #{filename}"
  path = File.dirname(filename)
  #filename = File.basename(filename)  
  `mkdir -p \"#{path}\"`
  `touch \"#{filename}\"`
end

它在一些小测试中起作用了。如果我遗漏了测试用例,请告诉我。我的使用方式如下:touchMakingDirs blah/blah/whatever/who.txt我将脚本命名为 touchMakingDirs 并将其放在我的路径中。

相关内容