我只需要从不同目录下载rpm文件。这是我的代码-
#!/usr/bin/env bash
# Download Only rpm file from certain directory.
# wget
# -4 = only ipv4
# -A = accept list
# -r = reccursively
# -R = reject list
# -c = continue
# -e = execute command
# --exclude-directories = take list
# Create a directory
mkdir mrepo
# Enter into the directory
cd mrepo
# RPM URL
repo_url="http://download.virtualbox.org/virtualbox/"
# Repo rpm
repo_download=('5.2.20' '5.2.22' '6.0.0')
# Exclude directories
exclude_dir=('*_Beta')
# Download all rpm packages
for i in "${repo_download[@]}"; do
echo $i/
echo ${repo_url}/$i/
# wget -A rpm -rc -e robots=off --reject "index.html*" ${repo_url}/$i/
wget -A zip -rc -e robots=off --reject "index.html*" ${repo_url}/$i/
done
# Tar the downloaded rpm
tar -cvzf missingrepo.tgz --exclude=./*.sh .
我的目标是
for
循环中。显然,它似乎有效。但实际上不是。 wget
命令,并开始从所有目录下载rpm文件。 :-( 试图使用--exclude-directories=
排除不必要的子目录。但是--exclude-directories
参数无效。
PS:为了快速执行和测试目的,我使用zip文件下载。
wget -A zip -rc -e robots=off --reject "index.html*" --exclude-directories=exclude_dir ${repo_url}/$i/
任何帮助都会非常有帮助!
答案 0 :(得分:1)
使用translation_en
的{{1}}和-np|--no-parent
命令行选项。
以递归方式进行检索时,切勿升至父目录。这是一个有用的选项,因为它可以确保仅下载特定层次结构下的文件。
指定递归最大深度级别。如果要从一个目录下载所有文件,请使用'-l 1'确保递归深度不超过一个。
因此,该命令应类似于-l|--level
。 wget
在我心中毫无用处。并且您应该将脚本中的wget -A zip -np -r -l 1 -c -e robots=off --reject "index.html*" ${repo_url}/${i}/
纠正为--reject "index.html*"
,并且不要在其后加斜杠。所以你得到
repo_url
结果是
"http://download.virtualbox.org/virtualbox"
为简单起见,该脚本的简短版本如下:
wget -A zip -np -r -l 1 -c -e robots=off ${repo_url}/${i}/