Most commands should work on all UNIX/LINUX systems. If there are difference, the OS name is put in front of the commands. Nevertheless, please run them first on a test environment.
Find 50 largest files on /fs:
aix:
#find /fs -xdev -type f -ls | sort +6n | tail -n 50linux:
#find /fs -xdev -type f -ls | sort -k 7n | tail -n 50solaris:
#find /fs -xdev -type f -ls | sort -k 7n | tail -50hp-ux:
#find /fs -xdev -type f -exec ls -la {} \; | sort -k 5n | tail -50Find core files on /fs:
#find /fs -name "core*" -xdev -type f -exec file {} \;Find AIX core files on /fs:
#find /fs -name "*core*" -xdev -type f -exec file {} \; | grep "AIX"Find newest files on /fs:
#find /fs -xdev -mtime -1 -type f -exec ls -l {} \;Sort all files in /fs by time:
#find . -type f -exec ls -lrt {} \;
Find newest 50 largest files on /fs:
aix:
#find /fs -xdev -mtime -1 -type f -ls | sort +6n | tail -n 50linux:
#find /fs -xdev -mtime 1 -type f -ls | sort -k 7n | tail -n 50solaris:
#find /fs -xdev -mtime 1 -type f -ls | sort -k 7n | tail -50hp-ux:
#find /fs -xdev -mtime 1 -type f -exec ls -la {} \; | sort -k 5n | tail -50
Find files larger than 100 bytes (example):
aix:
#find /fs -type f -size +100c -xdev -exec ls -l {} \;linux:
#find /fs -type f -size +100b -xdev -exec ls -l {} \;Finding files containing a string:
#find /fs -type f -print | xargs -i grep -il "searchstring" {}Finding all files in the current directory older than 180 days:
#find /fs -mtime +180 -exec ls -l {} \;Finding all files belonging to a specific user:
#find /fs -user searchuser -type f -exec du -k {} \;Display the total space used by a specific user in /fs:
#find /fs -user searchuser -type f -exec du -m {} \;|awk '{ s = s+$1 } END { printf "Total used: %d\n",s }'Display the total space used by a specific user in directory /fs but not outside the filesystem:
#find /fs -xdev -user searchuser -type f -exec du -m {} \;|awk '{ s = s+$1 } END { printf "Total used: %d\n",s }'Find all executable files in the current directory:
#find /fs -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \)Search by column (e.g. search for "2005" in column 10 can give you all files from 2005):
#find /fs -ls | awk '{if($10=="2005") print $0}'Display the total space used by files from, eg. 2006:
#find /fs -ls | awk '$10 == "2006" { sum += $7 } END { printf "Total used: %d\n",sum }'To get the value in human readable format:
#find /fs -ls | awk '$10 == "2006" { sum += $7 } END { hum[1024**3]="Gb";hum[1024**2]="Mb";hum[1024]="Kb"; for (x=1024**3; x>=1024; x/=1024){ if (sum>=x) { printf "Total used: %.2f %s\n",sum/x,hum[x];break } }}'Display the total space used by whatever files are you searching for:
fmbp:~ florian$ find . -type f -name "*.jpg" -ls | awk '{ sum += $7 } END { hum[1024**3]="Gb";hum[1024**2]="Mb";hum[1024]="Kb"; for (x=1024**3; x>=1024; x/=1024){ if (sum>=x) { printf "Total used: %.2f %s\n",sum/x,hum[x];break } }}'
Total used: 26.10 Gb
An example of how to search and delete all file from a directory from September 9:
#for i in $(find /fs -type f -ls | awk '{if($9=="9" && $8=="Sep") print $11}'); do rm -f $i; doneTo get prompt before running a desired command on each file found. To execute the command, enter Y or y. If you want to skip one file, just press enter alone:
#find $HOME/. -name *.txt -ok ls {} \;Copy a directory's content:
#find /fs | cpio -pdumv /some/dir/;How to list zero length files:
#find . -type f -empty -exec ls {} \;Find links that point to nothing with help of perl:
#find / -type l -print | perl -nle '-e || print';Find unprintable directories and move them to some directory:
#find . -inum 211028 -exec mv {} /some/dir/ \;Find a file after the inode number:
#find /usr -xdev -inum INODE -printHow to sort and display the files by number/year, except the current one:
#find . -type f -exec ls -la {} \;| awk '{print $8}' | grep -v ":" | sort | uniq -c- Log in to post comments
- 41166 views