【发布时间】:2019-03-04 09:50:18
【问题描述】:
我运行以下 bash 命令以使用文件 inode 和哈希格式化日志:
time find BASE_DIR -maxdepth 1 -mindepth 1 -type d |
sort |
xargs -P100 -n1 -IFF bash -ce "find FF -type f" |
sort |
xargs -n1 -I {} bash -ce "
FILE=$1; INODE=`stat -c '%i' $FILE`;
HASH=`cat $FILE | md5sum | cut -d' ' -f1`;
printf 'Name: %s - Inode: 0x%X - MD5: %s\n' $FILE $INODE $HASH;" {}
但每次我运行它时,我都会得到这样的结果:
Name: FILE1 - Inode: 0xFFFFFFFFFFFFFFFF> - MD5: SOME_MD5
Name: FILE1 - Inode: 0xFFFFFFFFFFFFFFFF> - MD5: SOME_MD5
Name: FILE1 - Inode: 0xFFFFFFFFFFFFFFFF> - MD5: SOME_MD5
Name: FILE1 - Inode: 0xFFFFFFFFFFFFFFFF> - MD5: SOME_MD5
每次都是同一个文件。如何正确地将 args 传递给 bash?
编辑
我能够通过将第二个 xargs 更改为:
xargs -n1 bash -ce '
path="$0";
inode=`stat -c "%i" $path`;
hash=`cat $path | md5sum | cut -d" " -f1`;
printf "Name: %s - InodeContext<0x%X> - MD5: %s\n" $path $inode $hash;'
【问题讨论】: