繁体   English   中英

我可以将 ls 命令与 -R 和特定类型的文件 (.txt) 结合使用吗

[英]Can i combine the ls command with -R and a specific type of file (.txt)

一周前我刚开始使用 bash 编程(如果这样称呼)上大学,所以我处于最低点哎呀......

任务是在我们的电脑上搜索.pdf、.txt和.docx文件并统计。

我正在寻找一种组合命令的方法

ls **.txt | wc -l

用命令

ls -R | wc -l

我尝试了这两个命令的组合:

ls -R **.txt | wc -l
ls **.txt -R | wc -l

已经给出了一个仅限 bash 的解决方案,但我想向您指出find是完成此类工作的绝佳工具。 例如:

find . -name '*.txt' -or -name '*.pdf' -or -name '*.docx'

要将**解释为任何子目录层次结构,您必须启用globstar选项: shopt -s globstar 然后,你应该ls **/*.txt ,而不是ls **.txt 请注意, ls通常不是您想要的脚本。 更喜欢:

$ shopt -s globstar nullglob
$ files=(**/*.txt)
$ echo "${#files[@]}"
124

如果您没有txt文件,则nullglob选项很有用。 如果没有它, **/*.txt将扩展为文字**/*.txt字符串,您将得到 1 的计数。启用nullglob后,它会扩展为空字符串。

files=(**/*.txt)将文件列表存储在名为files的索引 bash 数组中。 ${#files[@]}扩展为数组files中的元素数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM