76 lines
1.4 KiB
Bash
76 lines
1.4 KiB
Bash
|
# 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 <YEAR> [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[@]}
|
||
|
}
|