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

菲利普

本地文件树:

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

远程文件树:

/invoice/Insurance/2019/January/Insurance.January.2019.pdf
/invoice/Insurance/2020/February/Insurance.February.2020.pdf
/invoice/Provider1/.....

我想:我想(R)同步我的本地PDF的文件与匹配模式,如远程文件夹NameYear也许Month

我以为我可以通过for循环和case语句解决此问题:

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

还有其他想法吗?谢谢!

切普纳

您可以使用read命令分割文件名

for FILE in ../pdf/*.pdf; do
    [[ ! -f "$FILE" ]] && continue # check if $FILE is a file
    IFS=. read kind month year ext <<< "${FILE#./pdf/}"

    case "$kind" in
        [Ii]nsurance*)             # matching pattern in filename
            rsync command
            ;;
        Provider1*)
            rsync command
            ;;
        ...
        ...
    esac
done

  1. “ $ {FILE#。/ pdf /}”扩展为的值FILE,减去前导./pdf/
  2. <<< 将字符串输入命令的标准输入。
  3. read接受一行输入,根据IFS(此处为a .值的第一个字符执行单词拆分,然后将结果单词的每个变量(其名称作为参数传递)放入。

所以,如果FILE=./pdf/Insurance.January.2020.pdf,那么

IFS=. read kind month year ext <<< "${FILE#./pdf/}"

将字符串Insurance.Januray.2020.pdf输入read,然后执行分配

kind=Insurance
month=January
year=2020
ext=pdf

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不区分大小写的文件名模式匹配返回无

来自分类Dev

基于通配符模式的大小写规范化文件名

来自分类Dev

Ubuntu中的文件名是否区分大小写?

来自分类Dev

Ubuntu中的文件名是否区分大小写?

来自分类Dev

使用[msys] bash删除名称与模式匹配的所有文件,而不考虑文件名字母大小写

来自分类Dev

如何在Emacs 24 Shell模式下为文件名自动完成禁用区分大小写?

来自分类Dev

查找文件(不区分大小写),并在变量中获取真实文件名(区分大小写)

来自分类Dev

不区分大小写的文件系统如何同时显示大写和小写文件名?

来自分类Dev

perl脚本可搜索Java源代码以区分大小写(不区分大小写)文件名

来自分类Dev

如何在CLion中使用蛇形大小写作为文件名和骆驼形大小写作为文件名?

来自分类Dev

查找文件名仅大小写不同的文件

来自分类Dev

打开文件时忽略路径和文件名中的大小写

来自分类Dev

查找文件名仅大小写不同的文件

来自分类Dev

更改文件名大小写DOS批处理文件

来自分类Dev

OsX El Capitan忽略区分大小写的文件名,而不区分文件/目录

来自分类Dev

移动具有相同的不区分大小写文件名的文件

来自分类Dev

如何通过bat文件递归地更改文件名的大小写

来自分类Dev

如果与ClassTag一起使用,模式匹配会选择错误的大小写

来自分类Dev

在Linux上,node.js要求文件名区分大小写吗?

来自分类Dev

使用git filter-branch更改文件名大小写

来自分类Dev

在Windows上更改Mercurial中文件名的大小写

来自分类Dev

拇指驱动器无法区分Lubuntu上文件名的大小写

来自分类Dev

bash中不区分大小写的文件名搜索和检索

来自分类Dev

使用git filter-branch更改文件名大小写

来自分类Dev

文件名大小写已更改,但GIT不会忘记旧版本

来自分类Dev

Windows的Linux子系统中区分大小写的文件名

来自分类Dev

Webpack 认为有两个文件名仅在大小写不同

来自分类Dev

如果文件名与模式不匹配,请打印

来自分类Dev

perl脚本可在Java源代码中搜索区分大小写(不区分大小写)的文件名

Related 相关文章

  1. 1

    不区分大小写的文件名模式匹配返回无

  2. 2

    基于通配符模式的大小写规范化文件名

  3. 3

    Ubuntu中的文件名是否区分大小写?

  4. 4

    Ubuntu中的文件名是否区分大小写?

  5. 5

    使用[msys] bash删除名称与模式匹配的所有文件,而不考虑文件名字母大小写

  6. 6

    如何在Emacs 24 Shell模式下为文件名自动完成禁用区分大小写?

  7. 7

    查找文件(不区分大小写),并在变量中获取真实文件名(区分大小写)

  8. 8

    不区分大小写的文件系统如何同时显示大写和小写文件名?

  9. 9

    perl脚本可搜索Java源代码以区分大小写(不区分大小写)文件名

  10. 10

    如何在CLion中使用蛇形大小写作为文件名和骆驼形大小写作为文件名?

  11. 11

    查找文件名仅大小写不同的文件

  12. 12

    打开文件时忽略路径和文件名中的大小写

  13. 13

    查找文件名仅大小写不同的文件

  14. 14

    更改文件名大小写DOS批处理文件

  15. 15

    OsX El Capitan忽略区分大小写的文件名,而不区分文件/目录

  16. 16

    移动具有相同的不区分大小写文件名的文件

  17. 17

    如何通过bat文件递归地更改文件名的大小写

  18. 18

    如果与ClassTag一起使用,模式匹配会选择错误的大小写

  19. 19

    在Linux上,node.js要求文件名区分大小写吗?

  20. 20

    使用git filter-branch更改文件名大小写

  21. 21

    在Windows上更改Mercurial中文件名的大小写

  22. 22

    拇指驱动器无法区分Lubuntu上文件名的大小写

  23. 23

    bash中不区分大小写的文件名搜索和检索

  24. 24

    使用git filter-branch更改文件名大小写

  25. 25

    文件名大小写已更改,但GIT不会忘记旧版本

  26. 26

    Windows的Linux子系统中区分大小写的文件名

  27. 27

    Webpack 认为有两个文件名仅在大小写不同

  28. 28

    如果文件名与模式不匹配,请打印

  29. 29

    perl脚本可在Java源代码中搜索区分大小写(不区分大小写)的文件名

热门标签

归档