如何遍历文件夹中的每个文件?
我有一个名为 exam 的文件夹。该文件夹有 3 个文件夹,分别称为数学、物理和英语。所有这些文件夹中都有一些子文件夹和文件。我想遍历每个文件夹并将每个文件夹和文件的路径打印到另一个名为 files 的文件上。我已经这样做了:
#!/bin/bash
LOC="/home/school/exam/*"
{
for f in $LOC
do
echo $f
done
} > "files"
我得到的出口是:
/home/school/exam/math
/home/school/exam/physicals
/home/school/exam/english
我不知道如何使代码访问并执行考试的子文件夹也是如此。有什么建议吗?
PS 我只是 shell 脚本编写的初学者。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用
globstar
选项,当使用两个相邻的星号时,bash将递归子目录中的所有文件名use :
这里的参考是
man bash
:和
info bash
:With the
globstar
option bash will recurse all filenames in subdirectories when using two adjacent starsuse :
The reference here is
man bash
:and
info bash
:您可以使用
find
命令,它可以获取所有文件,然后您可以对它们执行某些操作,例如使用 exec 或 xargs。you can use
find
command, it could get all files, then you can do something on them, using exec or xargs for example.您还可以使用大多数 *nix 发行版中包含的
tree
命令。 (虽然 Ubuntu 是一个值得注意的例外 - 但可以通过 apt-get 安装)You can also use the
tree
command which is included in most *nix distributions. (Though Ubuntu is a notable exception - but can be installed via apt-get)递归地列出所有文件怎么样?
How about this to list all your files recursively.