在 Bash 中使用通配符匹配作为命令行参数
我正在尝试编写一个 Bash 脚本来转换一堆文件。
假设我有一个目录 /path/to/my files/
,其中包含三个文本文件:a b.txt
、c d.txt
和 < code>e.txt (注意空格)
我需要能够像这样调用脚本:
$ ./myscript.sh /path/to/my\ files/*.txt
然后在 bash 中循环它们以这样处理它们:
dest='/desktop/'
for ARG in $@; do
/some/other/script $ARG $dest$ARG.new
done
它不必完全像这样工作,任何能产生类似结果的最简单的方法
I'm trying to write a Bash script to convert a bunch of files.
Assume I have a directory /path/to/my files/
with three text files: a b.txt
, c d.txt
and e.txt
(note the spaces)
I need to be able to call the script like this:
$ ./myscript.sh /path/to/my\ files/*.txt
and then loop through them in bash to process them like this:
dest='/desktop/'
for ARG in $@; do
/some/other/script $ARG $dest$ARG.new
done
It doesn't have to work exactly like this, whatever is easiest that will yield similar results
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是否满足您的需要:
编辑:删除 ARG 上的路径
Does this do what you need:
EDIT: To remove the path on ARG
Bash 在执行命令之前会进行通配符扩展,也就是说,它将用匹配文件列表替换该表达式。
Bash does wildcard expansion before executing the command, that is, it will replace that expression with a list of matching files.