说我有以下问题
一种解决方案是:
FilesWithA=$(ls | grep a | wc -l)
FilesWithE=$(ls | grep e | wc -l)
FilesWithI=$(ls | grep i | wc -l)
FilesWithO=$(ls | grep o | wc -l)
FilesWithU=$(ls | grep u | wc -l)
这可以正常工作,但是该文件夹包含成千上万个文件。我希望通过将ls
的输出捕获到一个变量中,然后将输出发送到grep
和wc
来加快速度,但是语法使我不胜其烦。
lsCaptured=$(ls)
FilesWithA=$($lsCaptured | grep a | wc -l) #not working!
答案 0 :(得分:3)
使用此:
#!/bin/bash
captured="$(printf '%s\n' *)"
filesWithA=$(grep -c a <<< "$captured")
<<<
是 here-string ls
output