📜  对于目录 bash 中的每个文件夹 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:25:10.964000             🧑  作者: Mango

对于目录 bash 中的每个文件夹

在 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 中的每个文件夹进行常用操作的方式。