我正在尝试创建一个shell脚本,它将获取静态目录中的文件数,然后在一个表中显示目录和它包含的文件数。
包含目录静态路径的文件。该文件名为dirs.txt。这些路径的格式为. /path/to/file.txt
下面是我正在运行的脚本:
#! /bin/bash
files=$(wc -l)
while read dir; do
print_table() {
perl -MText::ASCIITable -e '
$t = Text::ASCIITable->new({drawRowLine => 1});
while (defined($c = shift @ARGV) and $c ne "--") {
push @header, $c;
$cols++
}
$t->setCols(@header);
$rows = @ARGV / $cols;
for ($i = 0; $i < $rows; $i++) {
for ($j = 0; $j < $cols; $j++) {
$cell[$i][$j] = $ARGV[$j * $rows + $i]
}
}
$t->addRow(\@cell);
print $t' -- "$dir"
}
print_table Directory 'Files Created' -- \
$dir "${files}"
done < dirs.txt
我想做一个“foreach”,以便所有的文件夹路径可以添加到同一个表与各自的文件计数。
问题是,当我运行这个时,它只是挂起。如果我作为变量单独输入目录,并删除“for”“do”,那么它就能工作。
1条答案
按热度按时间hmae6n7t1#
原始代码中存在一些问题。请尝试以下代码片段以查看是否有帮助:
稍后会解释-如果您想确认或提问。
*$files未使用wc -l命令的输出进行初始化。
应更新为类似
files=$(find $dir -type f | wc -l)
的值,以计算目录中的文件数。