recursive1 : exec in depth 1.
This commit is contained in:
parent
c7bec1b445
commit
71333b66d9
|
@ -586,6 +586,7 @@ Command|Description
|
||||||
Command|Description
|
Command|Description
|
||||||
---|---
|
---|---
|
||||||
`recursive <COMMAND>`|Cd into every directory recursively and run specified command in each dir.
|
`recursive <COMMAND>`|Cd into every directory recursively and run specified command in each dir.
|
||||||
|
`recursive1 <COMMAND>`|Cd into every directory in current directory and run specified command in each dir.
|
||||||
|
|
||||||
## Shopt.
|
## Shopt.
|
||||||
|
|
||||||
|
|
|
@ -27,5 +27,34 @@ recursive()
|
||||||
cd "${current}"
|
cd "${current}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# run something recursively over all directories.
|
||||||
|
# usage: recursive [COMMAND]
|
||||||
|
recursive1() # TODO: create generic function.
|
||||||
|
{
|
||||||
|
local IFS=$'\n'
|
||||||
|
local current="${PWD}"
|
||||||
|
local dirs=$(find -mindepth 1 -maxdepth 1 -type d)
|
||||||
|
local total=$(find -mindepth 1 -maxdepth 1 -type d | wc -l) # TODO: don't call find twice. won't work with "echo ${dirs}".
|
||||||
|
local count=0
|
||||||
|
|
||||||
|
for dir in ${dirs}; do
|
||||||
|
# increment counter.
|
||||||
|
((count++))
|
||||||
|
|
||||||
|
# cd into the next dir.
|
||||||
|
cd "${current}"
|
||||||
|
cd "${dir}"
|
||||||
|
|
||||||
|
# echo status.
|
||||||
|
echo -e "${color_bblue}[${count}/${total}] recursive dir: ${dir}${color_default}"
|
||||||
|
|
||||||
|
# run command.
|
||||||
|
$*
|
||||||
|
done
|
||||||
|
|
||||||
|
# return back on complete.
|
||||||
|
cd "${current}"
|
||||||
|
}
|
||||||
|
|
||||||
# autocomplete.
|
# autocomplete.
|
||||||
complete -F _autocomplete_nested recursive
|
complete -F _autocomplete_nested recursive recursive1
|
||||||
|
|
Reference in a new issue