I have
find . -iname \"*.py\" -exec pylint -E {} ;\\
and
FILES=$(find . -iname \"*.py\")
pylint -E $FILES
If
[UPDATED based on helpful additions in the comments]
If you don't have an __init__.py
file in the directory, and you don't want to for various reasons, my approach is
touch __init__.py; pylint $(pwd); rm __init__.py
If you already have a __init__.py
file in that directory, it will be deleted.
If you find yourself needing this functionality often, you should make a function that does this in a safer way that preserves a pre-existing __init__.py
file. For example, you could put the following pylint_all_the_things
function in your ~/.bashrc
file. (The last line exports the function so it can be called from any subshell.) If you don't want to edit .bashrc
, you could put the function body in an executable shell script file.
This function defaults to running pylint in your current directory, but you can specify the directory to use as the 1st function argument.
# Run pylint in a given directory, defaulting to the working directory
pylint_all_the_things() {
local d=${1:-$(pwd)}
# Abort if called with a non-directory argument.
if [ ! -d "${d}" ]; then
echo "Not a directory: ${d}"
echo "If ${d} is a module or package name, call pylint directly"
exit 1
fi
local module_marker="${d}/__init__.py"
# Cleanup function to later remove __init__.py if it doesn't currently exist
[[ ! -f ${module_marker} ]] && local not_a_module=1
cleanup() {
(( ${not_a_module:-0} == 1 )) && rm "${module_marker}"
}
trap cleanup EXIT
# Create __init__.py if it doesn't exist
touch "${module_marker}"
pylint "${d}"
cleanup
}
export -f pylint_all_the_things
The trap
utility is used to ensure the cleanup happens even if the call to pylint
fails and you have set -e
enabled, which causes the function to exit before reaching the cleanup line.
If you want to call pylint
recursively on the current working directory and all subfolders, you could do something like
for dir in ./**/ ; do pylint_all_the_things "$dir"; done
Which will require globstar to be enabled in bash (shopt -s globstar
).