我需要在庞大的目录结构上执行搜索,并输出不包含特定子目录的顶级目录(在本例中为" master")或包含任何.wav文件的目录。
前
001\Master\files.wav
002\files.wav
003\Admin\otherfiles.txt
在这种情况下,我只需要将目录003打印到文件中。
我开始的字符串如下:
find . d -depth 2 \! -exec test -e '{}master' \; > folders.txt
这让我至少朝着正确的方向前进。
我也试过&运行两个并发的查找请求和grep来获取输出但到目前为止还没有工作。我也试图找到一种方法来使用grep -v'但我不能。有人有什么想法?
我甚至考虑编写一个脚本来处理搜索,进行初始查找,然后对输出执行第二次搜索,只给出我需要的那些目录。
答案 0 :(得分:0)
我没有尝试过这个,但我会做这样的事情
find . -name "*.wav" $(printf "! -name %s " master)
您可以将字符串母版替换为您想要排除的内容
因为在您提出的问题中,您只需要level1文件夹即可使用AWK命令
find . -name "*.wav" $(printf "! -name %s " master) | awk -F '/' '{print $2}'
答案 1 :(得分:0)
find . |egrep -i -v "\\\\master\\\\|wav$" | awk -F '/' '{print $2}' |sort -u
或
find . |egrep -i -v "\\\\master\\\\|wav$" | awk -F '/' '{a[$2]++}END{for (i in a) print i , a[i]}' |sort -u
答案 2 :(得分:0)
for topdir in */
do [ "`find $topdir \( -name Master -o -name \*.wav \) -print -quit`" ] || echo $topdir
done
如果您的find
不知道-quit
并抱怨invalid predicate `-quit'
,请删除-quit
(该命令可能需要更长时间)。