在列出我不在的文件夹的内容时遇到问题,同时排除实际的文件夹名称本身。
前任:
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-
但我认为你需要更具体;-)
我只是用sed
修复了它
find $BASE -type d ( ! -iname "." )|sed s/$BASE//g
其中$BASE
是初始文件夹名称。