📌  相关文章
📜  linux 计算子目录中的文件 - Shell-Bash (1)

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

Linux 计算子目录中的文件 - Shell-Bash

在 Linux 操作系统中,我们通常会需要计算某个目录(包括其所有子目录)中的文件数量、文件大小等信息。在这种情况下,可以使用 Shell-Bash 编写脚本来实现。

统计目录中的文件数量

下面是一个简单的 Shell-Bash 脚本,可以用于统计目录中的文件数量:

#!/bin/bash

DIRECTORY="$1"
COUNT=0

if [[ ! -d "$DIRECTORY" ]]; then
  echo "Error: $DIRECTORY is not a directory"
  exit 1
fi

for FILE in $(find "$DIRECTORY" -type f); do
  COUNT=$(( COUNT + 1 ))
done

echo "There are $COUNT files in $DIRECTORY"
计算目录大小

如果你想计算目录的大小,可以采用类似以下的脚本:

#!/bin/bash

DIRECTORY="$1"
SIZE=0

if [[ ! -d "$DIRECTORY" ]]; then
  echo "Error: $DIRECTORY is not a directory"
  exit 1
fi

for FILE in $(find "$DIRECTORY" -type f); do
  SIZE=$(( SIZE + $(stat -c "%s" "$FILE") ))
done

echo "Total size of $DIRECTORY is $SIZE bytes"

这个脚本会遍历目录及其子目录中的每个文件,并计算它们的大小之和。注意,我们使用了 stat 命令来获取文件的大小。

其他计算方式

除了统计文件数量和目录大小之外,我们还可以采用其他方式来计算目录中的文件信息。例如,以下脚本可以用于按文件类型统计文件数量:

#!/bin/bash

DIRECTORY="$1"
COUNT=0

if [[ ! -d "$DIRECTORY" ]]; then
  echo "Error: $DIRECTORY is not a directory"
  exit 1
fi

for FILE in $(find "$DIRECTORY" -type f); do
  EXT=$(echo $FILE | awk -F . '{print $NF}')
  case "$EXT" in
    "txt" | "md" | "sh")
      COUNT=$(( COUNT + 1 ))
      ;;
  esac
done

echo "There are $COUNT text files in $DIRECTORY"

在这个脚本中,我们根据文件扩展名来判断它是否是文本文件。如果是,就将计数器加一。

总结

Shell-Bash 脚本是 Linux 系统中非常强大的工具,它可以帮助我们实现各种自动化任务。对于计算目录中的文件信息,我们可以使用类似上面介绍的脚本来完成。当然,这只是脚本的一部分,你可以根据自己的需要对其进行修改和扩展。