例如,有以下目录。
AAA/dir1
AAA/dir2
AAA/dir3
如何使用shell命令和管道在另一个根目录中创建具有相同名称的目录?
BBB/dir1
BBB/dir2
BBB/dir2
答案 0 :(得分:1)
如果我了解您在当前工作目录./AAA
下有一个级别的目录,并且您希望复制名为AAA
的{{1}}下的第一级目录的目录结构在当前工作目录的新目录dir1, dir2, ...
下,您只需要一个BBB
循环和for
。没有管道或mkdir -p
需要。
如果要使用ls
循环选择目录(而不是文件和目录),则会向glob附加一个尾随for
。例如,要选择当前下的所有第一级目录,可以使用:
'/'
这将允许您遍历变量for dir in */; do
中的目录名称。 (不包括以dir
开头的隐藏目录)
在这个问题中,您希望添加一个约束,您希望在'.'
AAA
下选择第一级目录(或dir*
来准确 - 以避免选择任何{ {1}})。因此,您只需将约束添加到目录选择中,例如
dir[0-9]*
POSIX shell提供参数扩展,使用AAA/dirnotnumbered
形式的子字符串替换替换for dir in AAA/dir[0-9]*/; do
中${var/find/replace}
的{{1}}第一次出现find
。您可以使用它来查找$var
并将其替换为replace
。
剩下的就是使用AAA
代替BBB
在新名称上调用mkdir -p
,例如
BBB
仔细看看,如果您有其他问题,请告诉我。