Bash - 为最近创建的文件夹创建子文件夹

时间:2016-06-03 12:21:46

标签: bash for-loop find directory

我想"加入"这两项任务:

for dir in /blabla/bleble/*; do (cd "$dir" && mkdir -p Folder1/Folder1a && mkdir -p Folder2); done

find -amin -10

我该怎么做? 我试过这个,但它不起作用:

find -amin -2 -exec sh -c '
for dir in /blabla/bleble/*; do (cd "$dir" && mkdir -p Folder1/Folder1a && mkdir -p Folder2); 
done' sh {} +

2 个答案:

答案 0 :(得分:0)

这样的事可能会这样:

find /a/b/ -mindepth 1 -maxdepth 1 -type d -amin -2 \
  -exec sh -c 'for f; do mkdir -p -- "$f/Folder1/Folder1a" "$f/Folder2; done"' "" {} +

故障:

-mindepth 1 -maxdepth 1会将结果限制为当前目录。

-type d确保您只列出目录

-exec foo "" {} +将以匹配作为参数执行foo

foo "" "/a/b/c" "/a/b/john" "a/b/doe"

for f将迭代所有位置参数($1$2,...)

for f; do
  mkdir -p -- "$f/Folder1/Folder1a" "$f/Folder2"
done

正在运行sh -c 'code' arg1 arg2会将$0设置为arg1,将$1设置为arg2,因此空参数:foo "" {} +

% sh -c 'echo $0' john
john

答案 1 :(得分:0)

假设/blabla/bleble中没有这么多文件夹溢出命令行,您可以使用find搜索目标目录。 -prune阻止递归到目录。

find /blabla/bleble/* -prune -type d -amin -10 -exec mkdir -p {}/Folder1/Folder1a {}/Folder2 \;

如果您使用的是GNU find或其他支持它们的版本,请使用-mindepth-maxdepth来查找顶级子目录,无论它们有多少。

find /blabla/bleble -maxdepth 1 -mindepth 1 -type d -amin -10 -exec mkdir -p {}/Folder1/Folder1a {}/Folder2 \;