我在做一个作业,我被要求在一定的大小和大小之间找到文件。我被特别要求提供以下格式的输出:
文件名Sha1文件大小
都在一条线上。我无法创建其他文件。
我试过以下方法:

for listed in $(find /my/output -type f -size -20000c):
do
sha1sum "$listed" | awk '{print $1}'
ls -l "$listed" | awk '{print $9 $5}'
done

它提供了所需的输出字段,但不是所需的格式,即。
sha1sum
filename filesize

有谁能给我一个建议,让我可以把所有这些都写在一条线上吗?
谢谢:)

最佳答案

如果使用stat命令以避免分析ls的输出,则可以简单地回显所需的所有值:

while IFS= read -r -d '' listed
do
  echo "$listed" $(sha1sum "$listed") $(stat -c "%s" "$listed")
done < <(find /my/output -type f -size -20000c -print0)

检查您的stat版本,不过,上面是GNU。在OS X上,例如
stat -f "%z" $listed

关于linux - 使用AWK对行和列进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47346916/

10-10 17:53