Bash函数统计文件类型及Perl文件操作技巧

194、编写一个函数,列出当前工作目录中普通文件、目录、块特殊文件、字符特殊文件、FIFO(命名管道)和符号链接的数量。用两种不同的方式实现:a. 使用 ls -l 输出的首字母来确定文件类型。b. 使用 [[ 表达式 ]] 语法的文件类型条件测试来确定文件类型。

以下是使用Bash实现该功能的代码:

# 方法a:使用ls -l的首字母确定文件类型
count_files_a() {
    local ordinary=0
    local directory=0
    local block=0
    local character=0
    local fifo=0
    local symlink=0

    for file in *; do
        file_info=$(ls -l "$file" | cut -c1)
        case $file_info in
            -)
                ((ordinary++))
                ;;
            d)
                ((directory++))
                ;;
            b)
                ((block++))
                ;;
            c)
                ((character++))
                ;;
            p)
                ((fifo++))
                ;;
            l)
                ((symlink++))
                ;;
        esac
    done

    echo "普通文件数量: $ordinary"
    echo "目录数量: $directory"
    echo "块特殊文件数量: $block"
    echo "字符特殊文件数量: $character"
    echo "FIFO数量: $fifo"
    echo "符号链接数量: $symlink"
}

# 方法b:使用[[ 表达式 ]]语法的文件类型条件测试
count_files_b() {
    local ordinary=0
    local directory=0
    local block=0
    local character=0
    local fifo=0
    local symlink=0

    for file in *; do
        if [[ -f "$file" ]]; then
            ((ordinary++))
        elif [[ -d "$file" ]]; then
            ((directory++))
        elif [[ -b "$file" ]]; then
            ((block++))
        elif [[ -c "$file" ]]; then
            ((character++))
        elif [[ -p "$file" ]]; then
            ((fifo++))
        elif [[ -L "$file" ]]; then
            ((symlink++))
        fi
    done

    echo "普通文件数量: $ordinary"
    echo "目录数量: $directory"
    echo "块特殊文件数量: $block"
    echo "字符特殊文件数量: $character"
    echo "FIFO数量: $fifo"
    echo "符号链接数量: $symlink"
}

# 调用函数
count_files_a
count_files_b

上述代码定义了两个函数 count_files_a count_files_b ,分别使用两种不同的方法来统计当前工作目录中不同类型文件的数量,并输出统计结果。

195、在Perl中开启警告有哪两种不同的方式?

可以使用 -w 选项和 use warnings 语句这两种方式在Perl中开启警告。

196、数组和哈希之间的区别是什么?

数组是有序的,而哈希是无序的。当将哈希赋值给列表时,键值对会保留,但顺序既不是字母顺序,
也不是插入哈希时的顺序,而是随机的。

197、在以下每个示例中,何时使用哈希(hash),何时使用数组(array)?a. 统计日志文件中每个 IP 地址的出现次数。b. 生成一份报告,列出超出磁盘配额的用户名单。

a. 使用哈希。因为需要将 IP 地址作为键,出现次数作为值来统计,哈希适合存储键值对。

b. 使用数组。只需要列出超出磁盘配额的用户,数组可以按顺序存储这些用户。

198、描述使用单引号和双引号引用字符串的区别。

在 Perl 中,双引号允许 Perl 插入变量并解释特殊字符,如换行符;单引号则不允许插值变量和解释特殊字符,会将引号内的字符原样输出。在赋值和使用包含空格或制表符的值时:

  • 双引号可保留空格和制表符,且不阻止变量替换,还能关闭大多数字符的特殊含义;
  • 单引号会将所有字符按字面意思解释。

199、编写一个程序,将目录层次结构中所有扩展名为 .ico 的文件复制到主目录下名为 icons 的目录中。(提示:使用 File::Find 和 File::Copy 模块。)

以下是一个使用 Perl 编写的示例程序

代码下载地址: https://pan.quark.cn/s/a4b39357ea24 在计算机视觉技术中,数据集扮演着训练和评估模型的核心角色。Labelme作为一个广受欢迎的开源工具,能够支持用户以交互方式对图像进行标注,而COCO(Common Objects in Context)则是一种被广泛采纳的数据集标准格式,适用于包括物体检测、图像分割在内的多种任务。本文将详细阐述如何将Labelme生成的标注数据转换为COCO数据集的标准格式。 Labelme标注的图像在输出为JSON格式时,会包含以下核心内容: 1. `version`: 指明JSON文件的版本信息。 2. `flags`: 目前未定义或保持为空,预留用于未来的功能扩展。 3. `shapes`: 列表形式存储对象的形状信息,每个形状项包含`label`(对象类别名称),`points`(构成对象边缘的多边形顶点),以及`shape_type`(通常为“polygon”)。 4. `imagePath`和`imageData`: 提供原始图像的存储路径和二进制数据,便于后续图像的还原。 5. `imageHeight`和`imageWidth`: 明确标注图像的垂直和水平尺寸。 COCO数据集的标准格式中定义了三种主要的标注类型: 1. Object instances(目标实例):主要用于执行物体检测任务。 2. Object keypoints(目标上的关键点):适用于人体姿态估计相关应用。 3. Image captions(看图说话):用于生成图像的文本描述。 COCO的JSON结构中包含以下基本组成部分: 1. `images`:记录图像的基本属性,包括`height`(高度)、`...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值