我有许多现有的子目录,例如:
/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;完成