无法列出我不在其中的文件夹的内容,同时排除实际的文件夹名称本身。
例如:
root@vps [~]# find ~/test -type d
/root/test
/root/test/test1
但是我希望它只显示 /test1,例如。
想法?
简单一点也没有什么问题
find ~/test -mindepth 1
同样,这也会有同样的效果:
find ~/test/*
因为它匹配
~/test/
中包含的所有内容,但不匹配 ~/test
本身。
顺便说一句,您几乎肯定会发现
find
会抱怨 -mindepth n
选项位于任何其他开关之后,因为顺序通常很重要,但 -(min|max)depth n
开关会影响整体行为。
您可以使用
-exec
和 basename
来做到这一点:
find ~/test -type d -exec basename {} \;
说明:
find ~/test -type d
部分递归地查找~/test
下的所有目录。-exec basename {} \;
部分在basename
上运行{}
命令,这是上一步的所有结果都被替换到的地方。那么你需要
-type f
而不是 -type d
。
或者,如果您想显示文件夹列表,不包括父文件夹
-mindepth 1
(find ~/test -type d -mindepth 1
)。
既然你编辑了它,我想你想要的可能是
find ~/test -type d -mindepth 1 |cut -d/ -f3-
但我认为你需要更具体;-)
(当前)我认为您不需要执行命令。
-printf
和 -maxdepth
可以替代 -exec basename
:
[...]$ find ~/test -mindepth 1 -type d -printf "/%P\n"
/test1
我刚刚用
sed
修复了它
find $BASE -type d \( ! -iname "." \)|sed s/$BASE//g
其中
$BASE
是初始文件夹名称。