我不能得到wget期望的东西。
目录如下所示:
server:
> d1
-> d2
--> A
---> 2021
----> file_A_2021_1
----> file_A_2021_2
----> file_A_2021_3
---> 2022
----> file_A_2022_1
----> file_A_2022_2
----> file_A_2022_3
---> 2023
----> file_A_2023_1
----> file_A_2023_2
----> file_A_2023_3
--> B
---> 2021
----> file_B_2021_1
----> file_B_2021_2
----> file_B_2021_3
---> 2022
----> file_B_2022_1
----> file_B_2022_2
----> file_B_2022_3
---> 2023
----> file_B_2023_1
----> file_B_2023_2
----> file_B_2023_3
字符串
a)我希望wget排除所有2021和2022目录。
我可以这样做:
第一个月
但是当结构变得有点复杂时,我开始对wget接受哪些通配符而不接受哪些通配符感到困惑。
B)我只想包括
B/2021/file_B_2021_2
B/2021/file_B_2021_3
B/2023/文件B_2023_2
B/2023/文件B_2023_3
我会在naive regex中将其缩短为B/202[13]/file_B_202[13]_[2-3]
。但我无法在wget语言中获得它。
我在类似于a)的情况下使用的真实的命令如下:wget -v -nH -np -w1 --random-wait -r -N --cut-dirs=2 -e robots=off --reject-regex ".*htm.*,.*list.*" -A "file_*_2023_*" -X "/d1/d2/*/202[12]" --user myuser --password mypass ftp://mysever.com/d1/d2/
个
什么是最聪明的(但仍然是最清晰的)使用方法
-A
-R
-I
-X
--accept-regex
--reject-regex
or other...
型
来达到a)和B)?
1条答案
按热度按时间iyr7buue1#
可能不是最聪明的,但一种明确的方式可能是以下。它适用于下载:
在“2”中完成的所有文件( all files finishing in '_2':
-A "*file*202*2"
)_ from子目录“A”和“B”,包括这两个子目录中的所有子目录:
-I "/d1/d2/[AB]/,/d1/d2/*"
_避免“.listing”文件和任何命名为
-R "*htm*,*list*"
的html文件:wget -v -nH -np -w1 --random-wait -r -N --cut-dirs=2 -e robots=off -R "*htm*,*list*" -A "*file*202*2" -I "/d1/d2/[AB]/,/d1/d2/*" --user myuser --password mypass ftp://myserver.com/d1/d2/
个因此,上述B)的解决方案为(未测试):
wget -v -nH -np -w1 --random-wait -r -N --cut-dirs=2 -e robots=off -R "*htm*,*list*" -A "*file_B_*_[23]" -I "/d1/d2/B/,/d1/d2/B/202[13]/" --user myuser --password mypass ftp://myserver.com/d1/d2/
个