我如何组合以下两个命令?我想获取一个包含所有者和文件大小的文件
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
陈述,以便重点关注组合它们的不同方式:
将语句组合
find
成“find-shell”:find ... -exec sh -c 'printf "%s - %s - %s\n" "$1" "$(stat -c %U "$1")" "$(du -sh "$1")"' find-sh {} \;
这会将文件一次一个地传递到 shell 命令中,该命令将stat
和du
命令组合成一个格式化printf
语句。第二个选项一次将多个文件传递给stat
命令。
将功能与
stat
:find ... -exec stat -c '%n %U %s' {} +
该stat
选项以字节为单位打印大小,与du -h
格式略有不同。
如果您有可用的 GNU 扩展名,则存在第三个选项-printf
:
find ... -printf '%p %u %s\n'