dotfiles/bin/dfilter

29 lines
392 B
Bash
Executable File

#! /bin/sh
filter="$1"
src="$2"
dest="$3"
root="$(pwd)"
rm -r "$dest"
rsync -a --exclude '.*' "$src" "$dest"
files="$(find "$dest" -type f)"
for file in $files; do
file "$file" | grep -q 'text' || continue
cd "$(dirname "$file")" || exit 1
file="$(basename "$file")"
exec 3< "$file"
rm "$file"
sh -c "$filter" <&3 > "$file"
exec 3>&-
cd "$root"
done