Skip to main content

I'm looking to get some insight into large files and folders on computers before they get to our office. We are seeing a large number of requests come in for not being able to update their macOS dues to low available storage so I'd like to be able to get a report on who has what storage left, easily looking into a device record and see the top 5 or 10 large files and folders. I've been playing with the "du" and "find" commands but struggling to put it together in a useable format for a script or extensions attribute. Does anyone have anything?

Nope, not yet.


what I am using seems to work for us, ymmv. As always test:

#!/bin/sh

LOGGEDIN=`ls -l /dev/console | awk '/ / { print $3 }'`

LARGEFILE=`sudo find /Users/$LOGGEDIN -type f -size +1G`

echo "<result>$LARGEFILE</result>"


what I am using seems to work for us, ymmv. As always test:

#!/bin/sh

LOGGEDIN=`ls -l /dev/console | awk '/ / { print $3 }'`

LARGEFILE=`sudo find /Users/$LOGGEDIN -type f -size +1G`

echo "<result>$LARGEFILE</result>"


Thanks will play with this today. Did you consider searching the whole HD as opposed to the logged in user folder, and did you work on adding the actual file size to the list?


I did add the size to each with below, now playing with searching the whole HD as opposed to just the user folder

#!/bin/sh

LOGGEDIN=`ls -l /dev/console | awk '/ / { print $3 }'`

LARGEFILE=`sudo find /Users/$LOGGEDIN -type f -size +5G -exec du -hs {} \\; | sort -hr`

echo "<RESULTS>$LARGEFILE</RESULTS>"

 


Hey @TomDay ,

that is what I was going to recommend, got busy prepping for Ventura, good start sir


I did add the size to each with below, now playing with searching the whole HD as opposed to just the user folder

#!/bin/sh

LOGGEDIN=`ls -l /dev/console | awk '/ / { print $3 }'`

LARGEFILE=`sudo find /Users/$LOGGEDIN -type f -size +5G -exec du -hs {} \\; | sort -hr`

echo "<RESULTS>$LARGEFILE</RESULTS>"

 


Unable to scan all the hard drive, getting operation not permitted on lots of folders. I used "find /" rather using "find /Users/XXX"


I did add the size to each with below, now playing with searching the whole HD as opposed to just the user folder

#!/bin/sh

LOGGEDIN=`ls -l /dev/console | awk '/ / { print $3 }'`

LARGEFILE=`sudo find /Users/$LOGGEDIN -type f -size +5G -exec du -hs {} \\; | sort -hr`

echo "<RESULTS>$LARGEFILE</RESULTS>"

 


running that in an EA is quite an overhead every time you run a recon.. you may be better off moving this to a policy, writing the data out to a file and then using a EA to collect that data. 

 

Alternative is to use a smart group with 'Boot Percentage Full' more than XX percent (80 seems to work), you can then get this to email where needed... 

 


#!/bin/bash

#Large File Export for Enrolled Devices

#Part A: Search for files based on Disk Usage

largeFileExport=$(du -achgx / | awk '$1>5 {print $0}' | sort -n | grep -v -e "Operation|not|permitted")
echo "<result>$largeFileExport</result>"

Reply