我以此方式为/var/www/html
中的所有文件制作指纹。
find /var/www/html -type f |xargs md5sum | tee /opt/figerprint.db.ori
它工作正常。
现在,我要将tee命令的所有标准输出重定向到/ dev / null。
find /var/www/html -type f |xargs md5sum | tee /opt/figerprint.db.ori 1>/dev/null
md5sum: /var/www/html/news/uploads/Red: No such file or directory
md5sum: Hat: No such file or directory
md5sum: Enterprise: No such file or directory
md5sum: Linux: No such file or directory
md5sum: 6.txt: No such file or directory
我发现该文件名无法正确解析。
ls /var/www/html/news/uploads/Red*
/var/www/html/news/uploads/Red Hat Enterprise Linux 6.txt
如何修复我的命令以将stdout正确重定向到/ dev / null?
答案 0 :(得分:2)
您的stdout重定向工作正常,并且与您收到的错误消息无关(无论如何,这是标准错误,而不是标准输出。如果要丢弃2>/dev/null
的stderr)。
该错误的原因是您将未加引号的文件名传递给md5sum
。 GNU find
的常见解决方法是使用零字节终止符代替换行符:
find /var/www/html -type f -print0 |
xargs -0 md5sum |
tee /opt/figerprint.db.ori >/dev/null
当然,如果您丢弃标准输出,则无需tee
。
find /var/www/html -type f -print0 |
xargs -0 md5sum >/opt/figerprint.db.ori
常见的添加方式是xargs -r
,以防止md5sum
找不到任何文件时根本无法运行find
。
错误消息表明您可能没有拥有GNU find
。完成同一件事的另一种方法是
find /var/www/html -type f -exec md5sum {} + >/opt/figerprint.db.ori
如果您的find
确实很古老并且不支持-exec ... +
,则需要切换到
find /var/www/html -type f -exec md5sum {} \; >/opt/figerprint.db.ori
这将是相当低效的,因为它会为找到的每个文件创建一个进程。
答案 1 :(得分:0)
尝试执行以下操作:
find /var/www/html -type f | xargs -i md5sum | tee /opt/figerprint.db.ori 1>/dev/null
摘自xargs
的手册:
-我 replace-str
用从标准输入中读取的名称替换初始参数中的replace-str出现。同样,未加引号的空格也不会终止输入项目。相反,分隔符是换行符。表示-x和-L 1。
答案 2 :(得分:0)
为什么find /var/www/html -type f |xargs md5sum | tee /opt/figerprint.db.ori
无法显示错误信息?
find /var/www/html -type f |xargs md5sum
md5sum: /var/www/html/news/uploads/Red: No such file or directory
md5sum: Hat: No such file or directory
md5sum: Enterprise: No such file or directory
md5sum: Linux: No such file or directory
md5sum: 6.txt: No such file or directory
tee
将在屏幕上同时显示stdout和stderr,但默认情况下仅写入stdout信息。
find /var/www/html -type f |xargs md5sum | tee /opt/figerprint.db.ori
我在屏幕上浏览了以上命令的输出,
md5sum: /var/www/html/news/uploads/Red: No such file or directory
md5sum: Hat: No such file or directory
md5sum: Enterprise: No such file or directory
md5sum: Linux: No such file or directory
md5sum: 6.txt: No such file or directory
上面的行(称为相关错误信息)被许多其他行如
包围b61b25303be0f573a6b9446d5cbe3a5b /var/www/html/index.php
相关错误信息默认情况下无法写入文件(T型字符)。
find /var/www/html -type f |xargs md5sum | tee /opt/figerprint.db.ori
永远无法正常工作。