目录
中的文件数有问题我用
$(ls /test -l | grep '^-' | wc -l)
但这样我只检索同一路径中的文件数,但不检索子目录中的文件数 如果我有
/test/1
/test/1/2
/test/1/3
/test/1/4/1
/test/1/4/2
/test/1/5
我的问题是如何检索/ test中的文件数量? 谢谢你的建议。
答案 0 :(得分:5)
试试这个
targetDir=/test
find ${targetDir} -type f | wc -l
我希望这会有所帮助。
答案 1 :(得分:2)
$(ls -lR /test | grep '^-' | wc -l)
最好使用find
$(find /test -type f | wc -l)
答案 2 :(得分:1)
标准方法是使用find
find /test -type f | wc -l
其他方法包括使用shell(例如bash 4)
shopt -s globstar
shopt -s dotglob
declare -i count=0
for file in **
do
if [ -f "$file" ];then
((count++))
fi
done
echo "total files: $count"
或编程语言,例如Perl / Python或Ruby
ruby -e 'a=Dir["**/*"].select{|x|File.file?(x)};puts a.size'
答案 3 :(得分:1)
使用wc -l
是最简单的方法,但如果您想要准确计算文件 ,那就更复杂了:
count_files()
{
local file_count=0
while IFS= read -r -d '' -u 9
do
let file_count=$file_count+1
done 9< <( find "$@" -type f -print0 )
printf %d $file_count
}
作为奖励,您可以使用它同时计入多个目录。
测试它:
test_dir="$(mktemp -d)"
touch "${test_dir}/abc"
touch "${test_dir}/foo
bar
baz"
count_files "$test_dir"