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

我正在尝试使用我的 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 为空。

https://stackoverflow.com/questions/5927369/

相关文章:

linux - 在shell中获取程序执行时间

python - 在 Python 中以 YYYY-MM-DD 获取今天的日期?

linux - 使用sudo时如何保留环境变量

linux - 如何递归查找并列出具有子目录和时间的目录中的最新修改文件

python - 在 Python 中获取临时目录的跨平台方法

linux - 更改 crontab 文件后重新启动 cron?

python - 如何检查变量是否是类?

linux - 如何使用自定义分隔符将多行文件名合并为一个?

python - Django:显示选择值

python - Python 是强类型的吗?