Shell 循环浏览当前目录的内容

Shell 循环浏览当前目录的内容,shell,Shell,查看目录内部并确定其内容是目录还是文件的最佳方式是什么。这是一个家庭作业问题 我的家庭作业要求我编写一个脚本,计算目录、文件的数量,以及可执行、可写和可读的数量。使用-X样式的运算符: [ -d "${item}" ] && echo "${item} is a directory" 请参阅bash手册页(搜索“条件表达式”)以查看完整列表 在目录内容中循环并计数如下所示: dirs=0 writeable=0 for item in /path/to/directory/*;

查看目录内部并确定其内容是目录还是文件的最佳方式是什么。这是一个家庭作业问题


我的家庭作业要求我编写一个脚本,计算目录、文件的数量,以及可执行、可写和可读的数量。

使用-X样式的运算符:

[ -d "${item}" ] && echo "${item} is a directory"
请参阅bash手册页(搜索“条件表达式”)以查看完整列表

在目录内容中循环并计数如下所示:

dirs=0
writeable=0
for item in /path/to/directory/*; do

    [ -d "${item}" ] && dirs=$(( dirs + 1 ))  # works in bash
    [ -w "${item}" ] && writeable=`expr ${writeable} + 1` # works in bourne shell

    # Other tests

done

echo "Found ${dirs} sub-directories"
echo "Found ${writeable} writeable files"

使用-X样式运算符:

[ -d "${item}" ] && echo "${item} is a directory"
请参阅bash手册页(搜索“条件表达式”)以查看完整列表

在目录内容中循环并计数如下所示:

dirs=0
writeable=0
for item in /path/to/directory/*; do

    [ -d "${item}" ] && dirs=$(( dirs + 1 ))  # works in bash
    [ -w "${item}" ] && writeable=`expr ${writeable} + 1` # works in bourne shell

    # Other tests

done

echo "Found ${dirs} sub-directories"
echo "Found ${writeable} writeable files"

假设您谈论的是bourne shell系列,请看一下
-d
-x
-w
。。。我猜是
-r
测试。查看bash中for循环的工作方式,了解如何迭代文件。。。总的想法是

for var in directory/*; do
    #stuff with $var
done

但是有一些与文件名中的空格有关的细节可能会让这个问题变得更棘手。

假设您正在谈论伯恩shell系列,请看一下
-d
-x
-w
。。。我猜是
-r
测试。查看bash中for循环的工作方式,了解如何迭代文件。。。总的想法是

for var in directory/*; do
    #stuff with $var
done

但与文件名中的空格有关的一些细节可能会使这个问题更加棘手。

在本作业中,您将编写一个shell脚本,用于计算给定目录内容的以下信息。将目录指定为脚本的单个命令行参数。您不需要考虑嵌套子目录的任何内容,只需考虑指定目录的直接内容。给定目录中的目录总数(请注意,这些是子目录)。给定目录中的文件总数。当前目录中可读的项目数(文件/目录)。当前目录中可写的项目数(文件/目录)。当前目录中可执行的项目数(文件/目录)。我尝试了$file do if[-d$file]中项目的代码,然后计数器=
expr$counter+1
fi echo“目录数:$counter”done@AndrewK:您在代码片段中的想法是正确的,只需再次检查“for”和“if”行。在循环和条件中使用“echo”检查并确保所有变量都包含您认为它们包含的值。@安德鲁:您可以通过将它们编辑到原始问题中来避免发布重复的作业说明。如果您想确定并提醒回答者注意更新,您可以在他们的回答上发表评论,说“请查看我的更新问题”。在本作业中,您将编写一个shell脚本,计算给定目录内容的以下信息。将目录指定为脚本的单个命令行参数。您不需要考虑嵌套子目录的任何内容,只需考虑指定目录的直接内容。给定目录中的目录总数(请注意,这些是子目录)。给定目录中的文件总数。当前目录中可读的项目数(文件/目录)。当前目录中可写的项目数(文件/目录)。当前目录中可执行的项目数(文件/目录)。我尝试了$file do if[-d$file]中项目的代码,然后计数器=
expr$counter+1
fi echo“目录数:$counter”done@AndrewK:您在代码片段中的想法是正确的,只需再次检查“for”和“if”行。在循环和条件中使用“echo”检查并确保所有变量都包含您认为它们包含的值。@安德鲁:您可以通过将它们编辑到原始问题中来避免发布重复的作业说明。如果您想确定并提醒回答者注意更新,您可以在他们的回答上发表评论,说“请查看我的更新问题”。将编写一个shell脚本,计算给定目录内容的以下信息。将目录指定为脚本的单个命令行参数。您不需要考虑嵌套子目录的任何内容,只需考虑指定目录的直接内容即可给定目录中的目录总数(请注意,这些是子目录)。给定目录中的文件总数。当前目录中可读的项目数(文件/目录)。当前目录中可写的项目数(文件/目录)。当前目录中可执行的项目数(文件/目录)。我尝试了$file do if[-d$file]中项目的代码,然后counter=expr$counter+1 fi echo“目录数:”$counterdone@AndrewK:我已经更新了,展示了如何添加bash和BourneShell。但事实上,如果这是一个学校作业,你应该自己解决这个问题。如果您打算做更多的shell脚本作业,我建议您通读整个bash手册页,并尝试所学内容。这本书读起来很难,需要几个小时,但最终会有回报(不仅仅是在学校,还有你将学到的强大工具)。或者通读:将编写一个shell脚本,用于计算给定目录内容的以下信息。将目录指定为脚本的单个命令行参数。您不需要考虑嵌套子目录的任何内容,只需考虑指定目录的直接内容即可直接访问的总数