合并查找语句

合并查找语句

我如何组合以下两个命令?我想获取一个包含所有者和文件大小的文件

find /test -type f -size +$(df -k /test| awk 'NR == 3 { printf "%d", 
$1/4 }') -exec du -sh {} +


find /test -type f -size +$(df -k /test | awk 'NR == 3 { printf "%d", 
$1/4 }') -exec stat -c '%U' {} +

答案1

有两种可能的选择,我删除了您的大部分find陈述,以便重点关注组合它们的不同方式:

  1. 将语句组合find成“find-shell”:

    find ... -exec sh -c 'printf "%s - %s - %s\n" "$1" "$(stat -c %U "$1")" "$(du -sh "$1")"' find-sh {} \;
    

这会将文件一次一个地传递到 shell 命令中,该命令将statdu命令组合成一个格式化printf语句。第二个选项一次将多个文件传递给stat命令。

  1. 将功能与stat

    find ... -exec stat -c '%n %U %s' {} +
    

stat选项以字节为单位打印大小,与du -h格式略有不同。


如果您有可用的 GNU 扩展名,则存在第三个选项-printf

find ... -printf '%p %u %s\n'

相关内容