首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为文件夹中的所有目录创建子目录

为文件夹中的所有目录创建子目录
EN

Stack Overflow用户
提问于 2013-06-25 14:47:20
回答 4查看 3.5K关注 0票数 5

假设我有一些目录,其中包含许多子目录,并且我想在每个子目录中创建一个同名的目录:

代码语言:javascript
复制
./dir-1
./dir-2
...
./dir-n

我想做mkdir */new-dir

但这会抛出一个错误。做这件事最好的方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-25 14:49:53

代码语言:javascript
复制
for dir in $(ls); do
  mkdir "$dir/new-dir"
done
票数 8
EN

Stack Overflow用户

发布于 2013-06-25 14:56:14

代码语言:javascript
复制
find . -type d | xargs -I "{x}" mkdir "{x}"/new-dir

如果您希望将其减少到第一级目录,请使用

代码语言:javascript
复制
find . -maxdepth 1 -type d | xargs -I "{x}" mkdir "{x}"/new-dir
票数 3
EN

Stack Overflow用户

发布于 2014-05-01 06:02:34

令人惊讶的是,这个问题从来没有得到一个合理的答案:

代码语言:javascript
复制
shopt -s nullglob
for i in */; do
    mkdir -- "${i}newdir"
done

  • 这对于文件名中的有趣符号(空格、通配符等)是100%安全的。
  • shopt -s nullglob以便在没有匹配项时全局展开为零。
  • -- in mkdir以标记选项的结尾(如果存在名称以连字符开头的目录,则不会混淆试图将其解释为选项的目录)。<代码>H211<代码>F212

这会默默地忽略隐藏目录。如果您需要对隐藏目录执行此操作,只需将行shopt -s nullglob替换为以下内容:

代码语言:javascript
复制
shopt -s nullglob dotglob

dotglob,以便globs也考虑隐藏的文件/目录。

如果您只想调用一次mkdir

代码语言:javascript
复制
shopt -s nullglob
dirs=( */ )
mkdir -- "${dirs[@]/%/newdir}"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17290844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档