for循环wget目录创建错误

for循环wget目录创建错误

我是 Ubuntu 新手。我尝试使用 wget2 批量下载多个文本文件中的链接。-P“$f”创建带有 .txt 后缀的目录名。是否可以忽略 -P“$f”的 .txt。有任何修改建议吗?

for f in *.txt;do wget2 -i "$f" -P "$f";done

答案1

${f%.txt}类似地展开$f,但.txt删除了后缀(如果有)。不要忘记像正确引用一样将其双引号括起来$f

for f in *.txt; do wget2 -i "$f" -P "${f%.txt}"; done

语法是可移植的,它采用模式(如文件名生成,也称为通配符模式,而不是正则表达式)。Eg 会${f%.*}为您提供除扩展名之外的所有内容,无论扩展名是什么。这里的点是文字,星号是通配符。

POSIX 指定了一些这样的功能。Bash 支持这些功能以及更多功能。文档:

答案2

我认为 bash 中最优雅的方式是使用基名

$(basename "$filename" "$suffix")

你的脚本变成:

for f in *.txt;do wget2 -i "$f" -P "$(basename "$f" .txt)";done

来源

相关内容