加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – BASH – 只打印路径中最深的目录

发布时间:2020-12-13 18:50:31 所属栏目:Linux 来源:网络整理
导读:我需要一些帮助….. 在我的.bashrc文件中,我有一个非常有用的功能(可能有点粗糙和准备,有点hacky,但它有效!)读取输入文件,并在每个上使用’tree’函数输入行来创建目录树.然后将此树打印到输出文件(以及文件夹的大小)中. multitree(){ while read cheese do
我需要一些帮助…..

在我的.bashrc文件中,我有一个非常有用的功能(可能有点粗糙和准备,有点hacky,但它有效!)读取输入文件,并在每个上使用’tree’函数输入行来创建目录树.然后将此树打印到输出文件(以及文件夹的大小)中.

multitree()
{
    while read cheese
    do
        pushd . > /dev/null
        pushd $cheese > /dev/null
        echo -e "$cheese nn" >> ~/Desktop/$2.txt
        tree -idf . >> ~/Desktop/$2.txt
        echo -e "nnn" >> ~/Desktop/$2.txt
        du -sh --si >> ~/Desktop/$2.txt
        echo -e "nnnnnnn" >> ~/Desktop/$2.txt
        popd > /dev/null
    done < $1
        cat ~/done
}

这可以节省时间,并输出如下所示的代码段:

./foo
./foo/bar
./foo/bar/1
./foo/bar/1/2

等等….

然而,我需要做的第一个(也是最繁琐的)是删除所有条目,只留下最深的文件夹路径(使用上面的例子,它将简化为./foo/bar/1/2)

有没有办法在树函数之前/之后处理文件只打印最深层次?

我知道像python这样的东西可能会做得更好,但我的问题是我从来没有使用python我不确定工作系统会让我运行python …他们让我们修改我们自己的.bashrc所以我是不要太担心!

先谢谢你们!!!!

欧文.

解决方法

你可以用
find . -type d -links 2

替换.如果需要,可以使用目录.

编辑:说明:

find在目录中搜索与给定过滤器匹配的文件.在这种情况下,目录是.,并且过滤器是-type d -links 2.

-d目录的d过滤器

– 链接2个过滤器,用于那些与其名称有两个(硬)链接的过滤器.实际上,这会过滤掉所有没有子目录的目录,因为只有那些目录有两个:父目录中的那个和.链接本身.具有子目录的那些在其子目录中也具有..链接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读