假设我有一些目录,其中包含许多子目录,并且我想在每个子目录中创建一个同名的目录:
./dir-1
./dir-2
...
./dir-n我想做mkdir */new-dir
但这会抛出一个错误。做这件事最好的方法是什么?
发布于 2013-06-25 14:49:53
for dir in $(ls); do
mkdir "$dir/new-dir"
done发布于 2013-06-25 14:56:14
find . -type d | xargs -I "{x}" mkdir "{x}"/new-dir如果您希望将其减少到第一级目录,请使用
find . -maxdepth 1 -type d | xargs -I "{x}" mkdir "{x}"/new-dir发布于 2014-05-01 06:02:34
令人惊讶的是,这个问题从来没有得到一个合理的答案:
shopt -s nullglob
for i in */; do
mkdir -- "${i}newdir"
doneshopt -s nullglob以便在没有匹配项时全局展开为零。-- in mkdir以标记选项的结尾(如果存在名称以连字符开头的目录,则不会混淆试图将其解释为选项的目录)。<代码>H211<代码>F212这会默默地忽略隐藏目录。如果您需要对隐藏目录执行此操作,只需将行shopt -s nullglob替换为以下内容:
shopt -s nullglob dotglobdotglob,以便globs也考虑隐藏的文件/目录。
如果您只想调用一次mkdir
shopt -s nullglob
dirs=( */ )
mkdir -- "${dirs[@]/%/newdir}"https://stackoverflow.com/questions/17290844
复制相似问题