linux - 递归查找具有特定扩展名的文件

标签 linux bash recursion

我正在尝试使用我的 bash(最新的 Ubuntu LTS 版本)在一个目录及其子目录中查找所有具有特定扩展名的文件。

这是写在脚本文件中的内容:

#!/bin/bash

directory="/home/flip/Desktop"
suffix="in"

browsefolders ()
  for i in "$1"/*; 
  do
    echo "dir :$directory"
    echo "filename: $i"
    #   echo ${i#*.}
    extension=`echo "$i" | cut -d'.' -f2`
    echo "Erweiterung $extension"
    if     [ -f "$i" ]; then        

        if [ $extension == $suffix ]; then
            echo "$i ends with $in"

        else
            echo "$i does NOT end with $in"
        fi
    elif [ -d "$i" ]; then  
    browsefolders "$i"
    fi
  done
}
browsefolders  "$directory"

不幸的是,当我在终端中启动这个脚本时,它说:

[: 29: in: unexpected operator

(用 $extension 代替 'in')

这里发生了什么,错误在哪里? 但是这个花括号

最佳答案

find "$directory" -type f -name "*.in"

比整个东西短一点(而且更安全 - 处理文件名和目录名中的空格)。

对于名称中没有 . 的条目,您的脚本可能会失败,从而使 $extension 为空。

关于linux - 递归查找具有特定扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927369/

相关文章:

linux - 如何使用 expect 回复 SSH 登录提示?

python - python可以生成可执行的shell脚本吗?

bash - 仅从 IP 获取 Mac 地址(bash)

bash - 哪个 Unix 命令可以从这个字符串中获取数字?

java - 编写一个打印二叉树和每个节点级别数的方法

node.js - 关于nodejs推送数据到浏览器开源框架

python - 使用 python 脚本在应用程序中执行命令?

regex - Bash 脚本 - 用于转储文件列表的正则表达式

Java最大函数递归

python - python 3.x 中的递归 is_prime 函数