如果文件名匹配模式,请执行某些操作(for循环,大小写声明)

问题描述 投票:0回答:1

local文件树:

../pdf/Insurance.January.2020.pdf
../pdf/Insurance.February.2020.pdf
../pdf/Provider1.March.2020.pdf
../pdf/Provider2.April.2020.pdf

远程文件树:

../invoice/Insurance/2019/*.pdf
../invoice/Insurance/2020/*.pdf
../invoice/Provider1/.....

我想要的是:我想通过匹配NameYear以及Month之类的模式来与远程文件夹同步本地PDF文件。

我以为我可以使用for循环和案例陈述来解决这个问题:

for FILE in "./*.pdf"; do
    [[ ! -f "$FILE" ]] && continue # check if $FILE is a file
    FILENAME=${FILE##*//}          # cut only filename
    case "$FILENAME" in
        [Ii]nsurance*)             # matching pattern in filename
            rsync command
            ;;
        Provider1*)
            rsync command
            ;;
        ...
        ...
    esac
done

但是现在我认为这不是最快的方法,因为我必须写很多行才能找到匹配项。而且我还需要“重新匹配” YearMonth

还有其他想法吗?谢谢!

本地文件树:../ pdf / Insurance.January.2020.pdf ../pdf/Insurance.February.2020.pdf ../pdf/Provider1.March.2020.pdf ../pdf/Provider2。 April.2020.pdf远程文件树:../ invoice / Insurance / ...

bash
1个回答
0
投票

假设文件名中没有换行符。

© www.soinside.com 2019 - 2024. All rights reserved.