📅  最后修改于: 2023-12-03 15:25:10.964000             🧑  作者: Mango
在 bash 中,要对目录中的所有文件夹进行操作,可以使用 for 循环结合通配符来实现。下面我们来介绍一些常用的操作方式。
可以使用 ls
命令来获取当前目录下的所有文件和文件夹:
folders=$(ls -d */)
这里的 */
表示只获取文件夹,而不包括文件。-d
参数指示 ls
命令只输出目录名,而不要输出目录中的内容。$()
表示将命令的结果存储到变量 folders
中。
可以使用 for 循环来对每个文件夹执行相同的操作,比如统计文件夹中的文件数:
for folder in $folders
do
files=$(ls $folder | wc -l)
echo "$folder contains $files files"
done
这里的 for
循环遍历了 folders
中的每个文件夹,并将当前文件夹的路径存储到变量 folder
中。然后,使用 ls
命令获取该文件夹中的所有文件和文件夹的列表,再使用 wc -l
命令统计其中的文件数,并输出结果。
有时候我们需要对目录树中的所有文件夹进行操作,包括它们的子文件夹。可以使用 find
命令进行递归操作:
find . -type d -print0 | while read -d $'\0' folder
do
files=$(ls "$folder" | wc -l)
echo "$folder contains $files files"
done
这里的 find . -type d -print0
命令会列出当前目录及其所有子目录中的所有文件夹,使用 -print0
参数可以处理文件夹名中的空格等特殊字符。while read -d $'\0' folder
命令会按照 null 字符分割文件夹名,将每个文件夹的路径存储到变量 folder
中。然后,使用 ls
命令获取该文件夹中的所有文件和文件夹的列表,再使用 wc -l
命令统计其中的文件数,并输出结果。
通过以上介绍,我们学会了对于目录 bash 中的每个文件夹进行常用操作的方式。