在 shellscript 中更改工作位置并打印文件数量

在 shellscript 中更改工作位置并打印文件数量

我想要检索文件夹中的文件总数。

我会用 来做这件事ls | wc -l。我的代码是:

cd /home/user/myfolder
num=$("ls | wc -l")

但我知道这会打开一个新的 shell,它不知道工作目录已经更改。我如何ls | wc -l在同一个 shell 中执行该命令?

答案1

你的命令不会仅仅因为你引用了它而起作用,实际上bash命令替换 发生在当前工作目录中。然而,正如你应该避免解析输出ls我建议采用一种不同的方法。

我喜欢用find这样的方式:

find . -maxdepth 1 -type f -printf . | wc -c

这将为当前目录 (和) 中的每个文件 ( ) 打印一个.( ) ,然后仅计算输出中的字节数。-printf .-type f.-maxdepth 1wc

相关内容