![](/img/trans.png)
[英]Bash script find and copy files with multiple extensions including files with 2 or 3 extensions
[英]How to recursively get all files filtered by multiple extensions within a folder including working folder without using find in Bash script
經過一天的搜尋之后,我仍然有這個問題,也許是我做錯了,這是我的指令碼:
#!/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命令怎么做。
想象一下,我有這個文件樹:
, would echo: 我的腳本現在就從運行,它將回顯:
- 箱/源極/ sources.sh
- 斌/配置/ props.properties
- 斌/配置/文件夾/ moreProps.xml
將它們留在工作路徑中。
PS我知道這可以通過find來完成,但是我真的很想知道是否還有另一種學習方法。
謝謝!
您可以將find與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})"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.