在本地文件树:
/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的文件与匹配模式,如远程文件夹Name
,Year
也许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
但是现在我认为这不是最快的方法,因为我必须写很多行才能找到匹配项。而且我还需要“重新匹配”Year
和Month
。
还有其他想法吗?谢谢!
您可以使用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
FILE
,减去前导./pdf/
<<<
将字符串输入命令的标准输入。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] 删除。
我来说两句