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