找出一个目录中的所有含有某个文件的目录
一开始需求是找到一个目录中最底层的目录,比如说:
dir
├── a.txt
└── sdir1
├── aa.txt
└── sdir2
└── aaa.txt
2 directories, 3 files
上面这个 dir 目录,最底层的目录应该是 dir/sdir1/sdir2
想到的最简单的方法应该是 python 的 os.walk:
python -c 'import os;print "\n".join([x[0] for x in os.walk("dir") if not x[1]])'
后来需求改了,要求找出 一个目录中所有含有某个文件的目录,这也很好办,改下上面的 python 命令:
# 假如是找 aa.txt 这个文件所在的目录
python -c 'import os;print "\n".join([x[0] for x in os.walk("dir") if "aa.txt" in x[2]])'
最后来个 shell 版镇楼:
ls -lR dir | awk -vRS='\n\n' '{for(i=2;i<=NF;i++)if($i~/^aa\.txt$/){gsub(":","",$1);print $1;break}}'