fsw*_*ngs 5 linux command-line find
我正在使用 Debian 8.0,例如想查找包含 1 个以上.mkv文件的目录。我试过这个,但失败了:
find -type d -exec find {} -name '*.mkv' | wc -l\;
Run Code Online (Sandbox Code Playgroud)
SuperUser 上有一个类似的问答,我无法适应。这对我也不起作用:
find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; find '{}' -name '*.mkv' | wc -l" \; | awk '$NF>=2'
Run Code Online (Sandbox Code Playgroud)
错误消息指向一个语法错误:
bash: -c: line 0: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
这样做的原因是目录的名称是这样的:
Directory With Space and (Brackets)
Run Code Online (Sandbox Code Playgroud)
我建议指示 find 查找所有文件并打印出每个匹配项的包含目录,因此您无需担心解析奇怪的字符串。然后使用 uniq 计算重复项并使用 awk 过滤第一个字段,打印出出现多次的字段。例如
find . -type f -iname '*.mkv' -printf '%h\n'|sort|uniq -c | awk '$1 > 1'
Run Code Online (Sandbox Code Playgroud)