我有一个充满文件的目录。树看起来像这样:
|-- 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没有多少经验,所以我不确定从哪里开始。我哪里错了?
答案 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