# Group files by extension. # Usage: group_ext [FILES] function group_ext() { local IFS=$'\n' local targets=(${@}) [[ "${targets}" = "" ]] && targets=($(_ls_file)) process() { local ext=${target##*.} [[ -d "${target}" ]] && { _iterate_skip "Is a directory."; return 0; } [[ "${ext}" = "${target}" ]] && { _iterate_skip "No extension."; return 0; } mkdir ${ext} 2> /dev/null mv -- ${target} ./${ext}/${target} } _iterate_targets process ${targets[@]} } # Group files and dirs by year. # Usage: group_year [FILES] function group_year() { local IFS=$'\n' local targets=(${@}) [[ "${targets}" = "" ]] && targets=($(ls)) process() { local year=$(stat --format=%y ${target}) year=${year%%-*} mkdir ${year} 2> /dev/null mv -- ${target} ./${year}/${target} } _iterate_targets process ${targets[@]} }