我想"加入"这两项任务:
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 {} +
答案 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 \;