Linux (BASH)如何删除默认值';新线';接线员

Linux (BASH)如何删除默认值';新线';接线员,linux,shell,terminal,newline,output,Linux,Shell,Terminal,Newline,Output,我有一个命令: find /etc -type f \( ! -perm /o=w \) -exec /usr/bin/ls -hastl '{}' \; -exec /usr/bin/md5sum '{}' \; > somefile.log 这个命令创建这样的打印输出(我需要没有断线): 问题:要删除新行操作以获得这样的结果,我必须在此命令中添加什么内容: (...) is '-rw-r--r--. 1 root root 332 Oct 23 2012' ... 4.0K (.

我有一个命令:

find /etc -type f \( ! -perm /o=w \) -exec /usr/bin/ls -hastl '{}' \; -exec /usr/bin/md5sum '{}' \; > somefile.log
这个命令创建这样的打印输出(我需要没有断线):

问题:要删除新行操作以获得这样的结果,我必须在此命令中添加什么内容:

(...) is '-rw-r--r--. 1 root root 332 Oct 23  2012'

...
4.0K (...) /etc/xinetd.d/rsync >> fd32314f3157aaf15712e6da7758060d  /etc/xinetd.d/rsync
...

像这样的命令怎么样

echo "$(ls -hastl '{}') >> $(md5sum '{}')"

IMHO您只能使用exec执行一个命令。一个可能的解决方案可能是执行“sh-c”,这样就可以使用管道和类似工具:

末尾有一个换行符:

find /etc -type f -exec sh -c "/bin/ls -hastl '{}' | tr '\n' ' '" \; -exec /usr/bin/md5sum '{}' \;
没有任何换行:

find /etc -type f -exec sh -c "/bin/ls -hastl '{}' | tr '\n' ' '" \; -exec sh -c "/usr/bin/md5sum '{}'| tr -d '\n' " \;

两个连接每一对相邻的行只需将您的输出通过管道传输到
awk'NR%2{line=$0;next}{print line sep$0}'sep=“>>”
根据您的需要调整
sep

附录:

针对原作者的评论,我将解释此解决方案的一些细节:

awk
按记录方式处理输入,无需逐行执行更多选项。
(内部)变量
NR
存储当前记录的编号
%
是模运算符,因此对于奇数行号,
NR%2
的计算结果为
1
,对于偶数行号,
0
<代码>{…}将要执行的命令(所谓的“操作”)分组。由于
1
被视为“真”,而
0
被视为“假”,因此第一个操作仅对奇数行号执行。此操作由两个命令组成:首先,整行(
$0
)存储在变量
中,然后处理
下一个
记录(不考虑任何其他操作)。对于偶数行,不执行此操作,因此考虑第二个操作。由于在
{
之前没有表达式,因此执行操作:存储的(即上一个)
与名为
sep
的变量和当前行(
$0
)连接在一起。打印生成的字符串(并在最后自动追加一行新行)。将
sep
的值作为参数传递给
awk
,以便在不影响脚本的情况下轻松进行调整。由于
awk
读取标准输入和输出而无需进一步参数,因此您可以将查找的输出通过管道(
|
)传递到
awk
find…-exec…-exec…| awk…>)

问题不清楚,但我得到了答案:4.0K-rw-r--r--.1根根目录451 May 17 15:17/etc/httpd/conf.modules.d/01-cgi.conf 36e5444b2bd190f5cbad876bbeda461/etc/httpd/conf.modules.d/01-cgi.conf-如何删除文件路径的重复?
find/etc-etc-type f-exec sh-c“/bin/ls-hastl'{}'tr'\n''”\;-exec sh-c“/usr/bin/md5sum'{}'cut-d'-f1”\
外观不错,但我不知道如何使用awk,但我会尝试使用learn@user2424174我添加了一些解释,以帮助您理解我的答案,并鼓励您学习awk
find /etc -type f -exec sh -c "/bin/ls -hastl '{}' | tr '\n' ' '" \; -exec sh -c "/usr/bin/md5sum '{}'| tr -d '\n' " \;