专家,
在question之后执行此命令:
使用posixxargs参数:
find <somePath> -name '*.html' | sort -n | xargs -I{} sh -c 'w3m "{}" &>> "test.log"' --{}
我收到以下错误:
为什么bash不理解&amp;&gt;&gt;在我的执行中?
正如@Nahuel Fouilleul所说&#34; sh(posix)并不认识(bash)重定向&amp;&gt;&gt;&#34;。
使用bash的xargs参数
但是,当我执行以下命令时,建议的解决方案无效:
find <somePath> -name '*.html' | sort -n | xargs -I{} w3m {} &>> "test.log"
我收到此错误:
为什么bash不理解&amp;&gt;&gt;在我的行执行?看我的回答
答案 0 :(得分:2)
如果sh
(posix)无法识别(bash)重定向&>>
,则可能无效。
但该命令仍然可以破坏某些文件名。
命令应该是。
.. | xargs -I{} bash -c 'w3m "$1" &>> "test.log"' "process_name_you_want" {}
或者为了避免打开日志文件,每个文件的重定向都可以移出
.. | xargs -I{} w3m {} &>> "test.log"
编辑:答案是处理文件和写入输出的工具的一般性,在查看w3m工具之后,它似乎是控制台中的Web浏览器,你想做什么?
答案 1 :(得分:1)
从here我意识到运营商“&amp;&gt;&gt;”仅适用于 Bash版本4 。我正在使用 Bash版本3.2.51 ,所以它不起作用。
对于bash 4之前的版本,需要两个运算符:
time.sleep()
其中:
“&GT;&gt;” 中将stdout附加到test.log
“2&gt;&amp; 1”将stderr重定向到sdout的去向
因此使用xargs的命令如下:
w3m >> test.log 2>&1