Linux find exec md5sum,只有这样的总和(fullpath TAB size TAB mtime TAB ctime TAB md5)
Linux find exec md5sum, only the sum like this (fullpath TAB size TAB mtime TAB ctime TAB md5)
我想查看 /var/www 中文件的以下数据:
完整路径大小 mtime ctime md5
我运行以下命令:
find /var/www/ -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t' -exec md5sum {} \;
这给了我:
(完整路径大小 mtime ctime md5 完整路径)
/var/www/intranet/admin/tpl/view.tpl.php 1448 Wed Dec 16 18:51:06.0000000000 2015 Fri Sep 15 09:08:36.0805775786 2017 e0b7dacaf7c90fb0fbe7a69c331e36aa /var/www/intranet/admin/tpl/view.tpl.php
如何过滤最后一个完整路径?????我不想展示它。所有字段均以 TAB 分隔。
我试过了:
find /var/www/ -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t'
-exec md5sum {} | awk '{print }'\;
为此我收到错误:"find: missing argument to `-exec'"
find /var/www/ -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t' -exec md5sum {} + | awk '{print }'
为此我只得到了 md5sum。
提前致谢!
管道 (|
) 是一项 shell 功能。要获得 shell 功能,需要调用 shell:
find /var/www -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t' -exec sh -c 'md5sum "" | awk '\''{print }'\' MD5 {} \;
或者,如果您更喜欢将命令分布在多行中:
find /var/www \
-maxdepth 1 \
! -type d \
-printf '%p\t%s\t%t\t%c\t' \
-exec sh -c 'md5sum "" | awk '\''{print }'\' MD5 {} \;
备注
sh -c somestring
调用 shell 并指示它执行 somestring
.
中的任何命令
sh -c somestring MD5 {}
调用 shell 并执行一些字符串 and 将 [=18=]
分配给 MD5 和 </code>任何 <code>find
替代 {}
.
[=18=]
仅在 shell 创建错误消息时使用,否则不重要。
复杂的是我们的命令 somestring
必须同时包含单引号和双引号,这就是我们需要转义单引号的原因。
在我们的例子中,我们希望 somestring
为:
md5sum "" | awk '{print }'
为了防止主 shell 替换为 </code>,我们需要将其放在单引号内。但是,我们不能将单引号放在单引号内。解决方法是将其用于我们的单引号字符串:</p>
<pre><code>'md5sum "" | awk '\''{print }'\'
我想查看 /var/www 中文件的以下数据: 完整路径大小 mtime ctime md5
我运行以下命令:
find /var/www/ -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t' -exec md5sum {} \;
这给了我: (完整路径大小 mtime ctime md5 完整路径)
/var/www/intranet/admin/tpl/view.tpl.php 1448 Wed Dec 16 18:51:06.0000000000 2015 Fri Sep 15 09:08:36.0805775786 2017 e0b7dacaf7c90fb0fbe7a69c331e36aa /var/www/intranet/admin/tpl/view.tpl.php
如何过滤最后一个完整路径?????我不想展示它。所有字段均以 TAB 分隔。
我试过了:
find /var/www/ -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t'
-exec md5sum {} | awk '{print }'\;
为此我收到错误:"find: missing argument to `-exec'"
find /var/www/ -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t' -exec md5sum {} + | awk '{print }'
为此我只得到了 md5sum。
提前致谢!
管道 (|
) 是一项 shell 功能。要获得 shell 功能,需要调用 shell:
find /var/www -maxdepth 1 ! -type d -printf '%p\t%s\t%t\t%c\t' -exec sh -c 'md5sum "" | awk '\''{print }'\' MD5 {} \;
或者,如果您更喜欢将命令分布在多行中:
find /var/www \
-maxdepth 1 \
! -type d \
-printf '%p\t%s\t%t\t%c\t' \
-exec sh -c 'md5sum "" | awk '\''{print }'\' MD5 {} \;
备注
sh -c somestring
调用 shell 并指示它执行somestring
. 中的任何命令
sh -c somestring MD5 {}
调用 shell 并执行一些字符串 and 将[=18=]
分配给 MD5 和</code>任何 <code>find
替代{}
.[=18=]
仅在 shell 创建错误消息时使用,否则不重要。复杂的是我们的命令
somestring
必须同时包含单引号和双引号,这就是我们需要转义单引号的原因。在我们的例子中,我们希望
somestring
为:md5sum "" | awk '{print }'
为了防止主 shell 替换为
</code>,我们需要将其放在单引号内。但是,我们不能将单引号放在单引号内。解决方法是将其用于我们的单引号字符串:</p> <pre><code>'md5sum "" | awk '\''{print }'\'