在网上搜索了一天之后,我有了这个问题,也许我做错了什么,这是我的剧本:
#!/bin/bash
shopt -s extglob
FILE_EXTENSIONS=properties\|xml\|sh\|sql\|ksh
SOURCE_FOLDER=$1
if [ -z "$SOURCE_FOLDER" ]; then
SOURCE_FOLDER=$(pwd)
fi # Set directory to current working folder if no input parameter.
for file in $SOURCE_FOLDER/**/*.*($FILE_EXTENSIONS)
do
echo Working with file: $file
done
基本上,我想递归地获取所有文件夹中的扩展名列表文件,这些文件来自作为参数传递的目录,包括目录本身。
我想知道是否有办法做到这一点以及如何不使用查找命令。
想象一下,我有这个文件树:
我的脚本,就像现在一样,从 / bin 运行,会回应:
- 仓/源极/ sources.sh
- 仓/配置/ props.properties
- 仓/配置/文件夹/ moreProps.xml
将工作路径放在一边。
P.S。我知道这可以通过查找来完成,但我真的想知道是否还有另一种方式来学习。
谢谢!
答案 0 :(得分:0)
您可以将发现与 grep 一起使用,就像这样:
#!/bin/bash
SOURCE_FOLDER=$1
EXTENSIONS="properties|xml|sh|sql|ksh"
find $SOURCE_FOLDER | grep -E ".(${EXTENSIONS})"
#or even better
find $SOURCE_FOLDER -regextype posix-egrep -regex ".*(${EXTENSIONS})"