我想用奇数和偶数组合jpeg图像。所以我喜欢以下内容:
$ mkdir odd
$ mkdir even
$ find . -regextype posix-egrep -regex ".*[13579].jpg$" -print0 | xargs -i -0 mv {} odd/
$ find . -regextype posix-egrep -regex ".*[02468].jpg$" -print0 | xargs -i -0 mv {} even/
它工作正常。我在shell脚本中写了同样的东西。
#!/bin/bash
mkdir odd
mkdir even
find . -regextype posix-egrep -regex ".*[13579].jpg$" -print0 | xargs -i -0 mv {} odd/
find . -regextype posix-egrep -regex ".*[02468].jpg$" -print0 | xargs -i -0 mv {} even/
但它返回以下错误:
xargs: Warning: a NUL character occurred in the input. It cannot be passed through in the argument list. Did you mean to use the --null option?
为什么这个脚本不起作用?以及如何解决它?
1
不确定你当前的脚本是做什么的,但你可以通过在-exec选项中执行find来简化命令并完全删除xargs - 所以'find。-regextype posix-egrep -regex“。* [13579] .jpg $” - exec mv {} odd / \;' 会为你做第一线。
—
davidgo 2013年
我想知道“-i”是否是你的问题的原因 - 根据xargs用于替换函数,并且可能试图替换空字符。这并不能解释为什么你在那里使用它,或者为什么它在命令行上运行而不是脚本。我很想知道是否删除-i适合你。
—
davidgo 2013年
谢谢davidgo!它适用于-exec选项。但是如果我在xargs中删除-i选项,我就无法工作。我添加了该
—
铁杆和2013年
-i
选项,因为我想{}
在xargs参数中使用表达式。没必要吗?