在新位置创建空文件

时间:2015-12-10 04:56:47

标签: macos bash find

我有一个充满文件的目录。树看起来像这样:

|-- test1a
|   |-- test1b
|       |-- foo.txt
|       |-- bar.txt
|-- test2a
|   |-- test2b

目录名称与正则表达式test[1-9][ab]匹配。

在bash中使用find,我正在尝试使用与test2b中相同的文件名和扩展名在test1b中创建空白文件。

到目前为止,我已经尝试了以下内容:

find test1a/test1b -type f -exec touch test2a/test2b {} \;

然而,这不起作用。我对bash没有多少经验,所以我不确定从哪里开始。我哪里错了?

2 个答案:

答案 0 :(得分:1)

我能够使用以下方法解决此问题:

$ cd test2a/test2b
$ find ../../test1a/test1b -type f -exec sh -c 'touch $(basename {})' \;

我认为问题是{}提供完整路径而不是文件名。然后它试图创建一个已经存在的文件,因此它不管它什么都没做。

答案 1 :(得分:0)

这是第二种方法:

find test1a/test1b -type f -execdir echo touch test2a/test2b/{} \; > adhoc.sh
sh adhoc.sh