====== BASH - Files - Copy files to different directory ======
#!/bin/bash
for filename in *; do
if [[ -f "$filename" ]]; then
base=${filename%.*}
ext=${filename#$base.}
mkdir -p "${ext}"
mv "$filename" "${ext}"
fi
done
----
===== Copy all files by extension to single directory =====
find . -name \*.txt -exec cp {} someDirectory \;
or
find . -name "file*" -exec mv {} /tmp \;
**NOTE:** The open brackets **{}** are a placeholder for the argument which is to be used from the output of find.
**NOTE:** Why not just use **mv file* /tmp**.
* Problem with Moving Large Number of Files
* Linux systems have a predefined limit on the maximum number of arguments that can be used with a single command.
* This limit varies from system to system based on the stack size.
* Thus, if a very high number of files are being specified with the wildcard; e.g. over a hundred thousand files, it throws an error: **Argument list too long**.
----