【发布时间】:2015-06-09 13:38:58
【问题描述】:
我正在尝试对目录中的每个文件运行一个程序。 但是文件名中有空格。例如,一个文件可以命名为 «/my/good/path/MY - AWFUL, FILE.DOC» 当我尝试将路径发送到我的另一个工具(python 脚本)时,我收到一条错误消息,提示 «MY» 不是现有文件。 :(
这是我当前的 bash 代码:
#!/usr/bin/bash
for file in $(find "/my/pash" -name "*.DOC")
do
newvar=`program "$file"`
done
那么……我的问题在哪里?
谢谢大家:)
【问题讨论】:
-
所有文档都在同一个目录下,还是在子目录下?
-
它们在子目录中。像 «my/path/sub1/MY FILE WITH - SPACES, AND, COMMAS.DOC»
-
find '/my/path' -name '*.DOC' -exec script.py {} \;就足够了吗? -
有多少问题是重复的?
-
你如何处理
newvar中捕获的字符串?您必须一次处理一个文件,还是program可以在一次调用中处理多个文件?如果您不需要输出并且program只处理单个文件,那么@TomFenech 的建议很好。如果program处理多个文件,则使用find "/my/pash" -name "*.DOC" -exec program {} +和+代替\;的行为或多或少类似于xargs,以方便的文件数量运行程序。