如何在所有子目录中创建相同的文件?

如何在所有子目录中创建相同的文件?

我有许多现有的子目录,例如:

/path/to/my/subs/a
/path/to/my/subs/b
/path/to/my/subs/c

不,我想在每个文件中创建一个新文件。文件名是常量,例如:

/path/to/my/subs/a/foo.md
/path/to/my/subs/b/foo.md
/path/to/my/subs/c/foo.md

我该怎么做?我希望touch /path/to/my/subs/*/foo.md可以,但是它说touch: /path/to/my/subs/*/foo.md: No such file or directory

答案1

假设您用作bash您的 shell,然后使用括号扩展。

touch /path/to/my/subs/{a,b,c}/foo.md

答案2

您可以使用该find实用程序:

find /path/to/my/subs -type d -links 2 -exec touch "{}/foo.md" \;

这将从 subs 开始遍历整个树,找到叶(终端)目录,并在那里触及 foo md 文件。

您还可以省略“-exec”...部分并xargs在最后用来一起创建文件,生成更少的touch二进制文件,或者使用单一触摸:

touch $( find /path/to/my/subs -type d -links 2 | sed -e 's#$#/foo.md#g' )

find部分将获取目录,sed并将其转换为适当的文件名。

如果您有一层目录:

对于 /path/to/my/subs/* 中的 dir;do touch $dir/foo.md;完成

相关内容