gpt4 book ai didi

linux - 如何在不使用 Bash 脚本中的查找的情况下递归地获取包含工作文件夹的文件夹中的多个扩展名过滤的所有文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:29 25 4
gpt4 key购买 nike

在网上搜索了一整天后我有这个问题,也许我做错了什么,这是我的脚本:

#!/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

基本上,我想递归地从作为参数传递的目录(包括目录本身)中的文件夹中的扩展名列表中过滤所有文件。

我想知道是否有办法在不使用 find 命令的情况下做到这一点。

假设我有这个文件树:

  • bin/props.properties
  • bin/xmls.xml
  • bin/source/sources.sh
  • bin/config/props.properties
  • bin/config/folders/moreProps.xml

我的脚本,因为它现在是从 /bin 运行的,会回显:

  • bin/source/sources.sh
  • bin/config/props.properties
  • bin/config/folders/moreProps.xml

将工作路径中的那些放在一边。

附言我知道这可以通过 find 来完成,但我真的很想知道是否还有另一种学习方式。

谢谢!

最佳答案

你可以使用 findgrep,就像这样:

#!/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})"

关于linux - 如何在不使用 Bash 脚本中的查找的情况下递归地获取包含工作文件夹的文件夹中的多个扩展名过滤的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com