查找包含特定数量文件的目录

Modified on: Fri, 11 Jan 2019 19:40:03 +0800

希望我能够使用find命令执行此操作,但我在手册中看不到执行我想要的操作的测试。我希望能够在工作目录中找到包含少于,多于或完全指定的计数的任何目录。

find . -filecount +10 # any directory with more than 10 entries
find . -filecount 20 # any directory with exactly 20 entries

但唉,没有这样的选择。

作者:Paul Ruane

最佳答案

您可以尝试这样做,以获取子目录名称及其包含的文件/目录数量:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \;

如果要对所有子目录(递归查找)执行相同操作,请改为使用:

find . -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \;

选择那些包含10个文件的目录:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | 
  awk '$NF==10'

10或更多:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | 
 awk '$NF>=10'

10或更少:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | 
 awk '$NF<=10'

如果您只想保留目录名称(例如,您希望将其作为@evilsoup建议将其传输到下游的另一个进程),您可以使用:

find . -maxdepth 1 -type d -exec bash -c "echo -ne '{}\t'; ls '{}' | wc -l" \; | 
 awk -F"\t" '$NF<=10{print $1}'
作者:,terdon

相关问答

添加新评论