我想知道您如何找到变量中存储了多少变量...例如:
dir=$(ls)
dir会存储目录中所有文件的名称,我知道你可以通过while-do循环遍历它们。但有没有办法让我知道有多少变量(在这种情况下是文件名)存储在变量(dir)中?
感谢
答案 0 :(得分:5)
使用bash,这是一种将目录内容收集到数组中的更可靠的方法
dir=(*)
这将正确处理带空格的元素。
答案 1 :(得分:3)
一种干净的方法是使用bash数组。
dir=($(ls))
编辑:上面没有正确处理空格,请参阅Glenn对正确方法的回答,这仍然会创建一个bash数组:
dir=(*)
请注意上面的其他大括号。即我声明dir是一个数组,而不是一个变量。
然后你可以简单地得到dir(数组)中的元素数量:
echo ${#dir[@]}
您可以访问各个元素:
echo ${dir[0]}
echo ${dir[5]}
答案 2 :(得分:2)
ls | wc -l
或
echo "$dir" | wc -l
给你一个近似值。 (当文件名包含换行符时,它不能很好地工作。)
找出目录中文件数的可靠方法是
find . -maxdepth 1 -print0 | tr '\n\0' '_\n' | wc -l
但其中包含隐藏文件,默认情况下ls
未列出。
答案 3 :(得分:0)
Bash变量是字符串或字符串数组,没有别的。要检查字符串变量中存储了多少个单词:
$ echo "foo bar baz" | wc -w
3
要弄清楚当前目录中存在多少文件,@ glenn有正确的想法。要确定与任意find
命令匹配的文件数量,请使用此命令:
$ find [your options] -printf x | wc -c