【发布时间】:2014-06-11 01:30:15
【问题描述】:
我有一个执行以下操作的 shell 脚本:
INPUT_DIR 是一个包含 zip 文件的目录。 zip 文件看起来像 lograw1.zip、lograw2.zip 等。
我有一个名为 prog.py 的程序,它使用选项 -i 将输入作为 zip 文件并输出 tsv 文件。每个zip文件对应的tsv文件名称不同。
即 lograw1.zip 给出 logprocessed1.tsv 的输出
我有一个带有这个 for 循环的 shell 脚本,它运行良好。
for f in $INPUT_DIR/*.zip
do
filename=$(basename $f .zip)
tsvfilename="$(basename "${f/raw/processed}" .zip).tsv"
python /work/prog.py -i $f $OUTPUT_DIR/$tsvfilename
done
我想在 bash 脚本中使用 xargs 来读取 zip 文件并提交给我的 prog,对文件进行类似的重命名。如何使用 xargs 作为命令之间的参数发送? 提前致谢。
【问题讨论】:
-
如果您的文件在其名称中包含空格,这所有都不能完美运行。使用更多引号!
-
...更具体地说:
basename $f .zip必须是basename "$f" .zip。python /work/prog.py -i $f $OUTPUT_DIR/$tsvfilename必须是python /work/prog.py -i "$f" "$OUTPUT_DIR/$tsvfilename"。$INPUT_DIR/*.zip必须是"$INPUT_DIR"/*.zip。
标签: bash shell sed command-line-arguments xargs