# 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[@]} } # Copy files from current year to the named dir. # Usage: group_year_copy [FILES] function group_year_copy() { local IFS=$'\n' local selected_year="${1}" local targets=(${@:2}) if [[ ${selected_year} == "" ]]; then help group_year_copy return 2 fi # All files by default. [[ ${targets} == "" ]] && targets=($(ls)) mkdir ${selected_year} 2>/dev/null process() { local year=$(stat --format=%y ${target}) year=${year%%-*} if [[ ${year} == "${selected_year}" ]]; then rcp -- ${target} ./${selected_year}/ else _iterate_skip "Skip: ${year}" fi } _iterate_targets process ${targets[@]} }