다음 두 명령을 어떻게 결합할 수 있나요? 소유자와 파일 크기가 포함된 파일을 얻고 싶습니다.
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 {} \;
그러면 파일이 한 번에 하나씩 쉘 명령으로 전달되며, 이는 명령 stat
과 단일 형식 명령문으로 결합됩니다. 두 번째 옵션은 한 번에 여러 파일을 명령에 전달합니다.du
printf
stat
기능을 다음과 비교하십시오
stat
.find ... -exec stat -c '%n %U %s' {} +
이 stat
옵션은 크기를 바이트 단위로 인쇄하며 du -h
형식과 약간 다릅니다.
사용 가능한 GNU 확장이 있는 경우 세 번째 옵션이 있습니다 -printf
.
find ... -printf '%p %u %s\n'