#! /bin/zsh # # this file: # http://user.it.uu.se/~embe8573/conf/.zsh/files-fs # https://dataswamp.org/~incal/conf/.zsh/files-fs [[ $(uname) == "SunOS" ]] && return alias cp="cp -i -L -r" alias dfh="df -Th" alias mkdir="mkdir -p" alias mv="mv -i" alias rm="rm -r" system-wide-search () { local str=$1 sudo find / -xdev -type f -print0 | xargs -0 grep -H $str 2> /dev/null } follow-file () { local file=$1 local file_path=$(readlink -fn $file) local dir_path=$(dirname $file_path) cd $dir_path } watch-out () { watch -t -n 0.5 df } biggest-files () { local num_files=${1:-10} local where=${2:-./} local du_options=-ahS if [ -w $where ]; then du $du_options $where else sudo du $du_options $where 2> /dev/null fi | sort -hr | head -n $num_files } find-symlinks () { local target=$1 find $target -type l } alias find-links=find-symlinks drop-dash-suffix () { local -a files files=($@) local -a words local name local ext local suffix local new for f in $files; do name=${f:r} ext=${f:e} if [[ $name != ${name#*-} ]]; then words=("${(@s/-/)name}") words[-1]=() new=$words[1] words[1]=() for w in $words; do new=${new}-${w} done new=${new}.${ext} mv -u $f $new fi done } find-duplicates () { local -a files files=($@) md5sum $files 2> /dev/null | sort | awk '{ print $2,$1 }' | uniq -c -f1 | grep -v '^ *1 ' | tr -s " " | awk '{print $3}' } change-extension () { local new_extention=$1 shift local -a files files=($@) for f in $files; do if [[ -f $f ]]; then mv $f ${f:r}.$new_extention else no-file-msg $f fi done } alias change-ext=change-extension create-sized-file () { local size=$1 local name=${2:-rdm-$size} head -c $size < /dev/urandom > $name ls -b -l $name } alias {csf,sf}=create-sized-file touch () { local -a files files=($@) local last=$files[-1] for f in $files; do /usr/bin/touch $f done store-file-path $last } recent-files () { local hits=${1:-10} find -type f -printf "%C@ %p\n" | sort -rn | head -n $hits } alias newest-{files,file}=recent-files dir-size () { local -a dirs dirs=($@) local options='-hs' [ $# -gt 1 ] && options+='c' { [ -w . ] && du $options $dirs || sudo du $options $dirs 2> /dev/null } | sort -rh | head -n 10 } alias dirsize=dir-size list-directories () { local -a files files=($(ls -1d */)) dir-size $files } alias ldirs=list-directories alias lns='ln -s' identical-files () { local file_1=$1 local file_a=$2 cmp --silent $file_1 $file_a \ && echo "identical" \ || echo "different" } clean-filename () { local -a files files=($@) local new_name local ext local lowercased local buzz local -a buzzwords buzzwords=( \ 1024x768 \ 1080p \ 1220-x-1080 \ 1220-x-1200 \ 1220x1080 \ 1220x1280 \ 1280x1024 \ 1280x800 \ 1280x960 \ 1280 \ 1440x900 \ 1600-1200 \ 1600x1200 \ 1600x900 \ 1920x1080 \ 1920x1200 \ 2012 \ 2560x1600 \ 3000x2000 \ 720p \ 768x1024 \ adults \ best \ blogsport \ com \ desktop \ download \ edit \ full \ gif \ hd \ hq \ images \ img \ jpg \ lastest \ mix \ video \ normal \ official \ original \ ori \ pack \ photo-shoot \ photo \ picture \ remix \ the \ tumblr \ version \ video \ wallpapers \ wallpaper \ wallpa \ wall \ widescreen \ wide \ www \ zaroo7 \ ) for f in $files; do if [[ -f $f || -d $f ]]; then # lowercase lowercased=${f:l} new_name=${lowercased:r} ext=${lowercased:e} # buzzwords for buzz in $buzzwords; do new_name=${new_name//$buzz/} done # delimiters new_name=${new_name//[-:_ ]##/-} # initial dash new_name=${new_name/#-/} # non-alphanums new_name=${new_name//[^a-z0-9-]/} # extention [[ -n $ext ]] && new_name=${new_name}.${ext} # misc new_name=${new_name//-./.} new_name=${new_name//jpeg/jpg} [[ $f != $new_name ]] && mv $f $new_name 2> /dev/null fi done } count-word-in-files () { local word=$1 shift local -a files files=($@) for f in $files; do (( $(grep $word < $f | wc -l) )) && echo $f done } count-files () { find ./ -type f | wc -l } alias files=count-files count-all () { find ./ | wc -l } find-file-dwim () { local name=$1 local in_path=$(pwd | grep $USER) if [[ -z $in_path ]]; then sudo find / -name $name else find ~ -name $name fi } alias ff=find-file-dwim find-file-substring () { local name=$1 sudo find / -name \*$name\* } alias ffs=find-file-substring most-recent-modify () { local num_files=${1:-10} /bin/ls -dt ${PWD}/* | head -n $num_files } alias mr=most-recent-modify most-recent-access () { local num_files=${1:-10} /bin/ls -du ${PWD}/* | head -n $num_files } alias mra=most-recent-access