[英]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.