我想检查本地计算机上的文件列表的md5sum,并将其与我在远程服务器上复制的相同文件的md5sum进行比较。
如果我分别在每台机器的终端中检查:
# local
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum
> 5a58015f2abec5bb1ee3e6a003ec4beb -
# remote
find . -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum
> 5a58015f2abec5bb1ee3e6a003ec4beb -
现在,如果我将这些命令运行到bash脚本中:
path_local="path/to/data/"
server_remote="[email protected]"
path_remote="path/to/data/"
local_md5sum=$(find ${path_local} -type f -name "*.fastq.gz" -exec md5sum {} + | awk '{print $1}' | sort | md5sum)
echo "local_md5sum : ${local_md5sum}"
remote_md5sum=$(ssh ${server_remote} "find ${path_remote} -type f -name '*.fastq.gz' -exec md5sum {} + | awk '{print $1}' | sort | md5sum")
echo "remote_md5sum : ${remote_md5sum}"
> local_md5sum : 5a58015f2abec5bb1ee3e6a003ec4beb -
> remote_md5sum : 4a32580085edf9e49e00c46920517dd1 -
我在脚本中看到的唯一区别是,我对
'*.fastq.gz'
使用了简单的引号,而不是在上一个命令中使用了双引号。但是我必须或者我收到find: paths must precede expression
错误。为什么我没有相同的md5sum,我该如何解决?
最佳答案
您遇到了一个报价问题:在“远程服务器”部分,您需要转义$
,如下所示:awk '{print \$1}'
:
结果:
remote_md5sum=$(ssh ${server_remote} "find ${path_remote} -type f -name '*.fastq.gz' -exec md5sum {} + | awk '{print \$1}' | sort | md5sum")