gpt4 book ai didi

bash - 查找返回基本名称和大小的文件

转载 作者:行者123 更新时间:2023-11-29 09:46:31 24 4
gpt4 key购买 nike

在 bash 中,我可以像这样获取找到的文件的基本名称(不带路径的名称):

find . -exec basename {} \;

我可以得到这样的文件大小:

find . -exec ls -l {} \; | awk '{print $5}'

但我需要获取由空格分隔的基本名称和文件大小。

如何使用一个查找操作正确组合这两个命令?此代码不起作用:

find . -exec basename {} \; -exec ls -l {} | awk '{print $5}' \;

awk: can't open file ;find:
source line number 1
-exec: no terminating ";" or "+"

我正在尝试创建一个快速的重复文件查找器。使用此列表,我将进行排序,然后使用 uniq 使用以下条件查找所有重复的文件:重复 = 相同的“基本名称”和相同的“大小”(不进行 md5 检查)。

到目前为止,只是制作这个初始列表是我在句法上(也许在编程上)挂断的地方。如果您有更好的方法,请告诉我。它试图使用最基本的 bash 命令使其工作,因此它无需安装任何东西即可在 linux 和 mac 上工作。

最佳答案

GNU 系统

对于GNU系统,使用这个命令

find . -printf '%k\t%f\n'

获取每个文件的大小和基本名称的输出。

  • %k 以 kb 为单位打印文件大小
  • \t 原义制表符
  • %f 打印删除前导目录路径的文件名
  • \n 文字换行符

操作系统

对于 OSX,使用此命令,因为它本身不直接支持 -printf 参数。

find . -exec bash -c 'printf "%s\t%s\n" $(stat -f " %z" "$1") "$(basename "$1")"' - {} \;

关于bash - 查找返回基本名称和大小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com