PDA

Visualizza la versione completa : cancellare file che contengono una data stringa


Caleb
26-06-2006, 14:12
non è che niente niente sapete dove trovare uno scrippettino di shell in grado di cancellare tutti file che contengono una data stringa, sottodirectory comprese? sto smanettando con grep e sed ma data la natura dello scopo temo di fare casino

U-bahn
26-06-2006, 17:41
ecco qua una prima versione...per il momento non funziona con directory contenenti spazi (e presumibilmente altre aberrazioni del genere) nel nome; mentre con i file gli spazi non dovrebbero creare problemi :bhò:


#!/bin/bash -e

DIR="${1}"
CH_STR="${2}"
OP="${3}"

USAGE="${0} <directory> <string> <opts>\n
\"string\" is the string to search for,
\"opts\" are the options to be passed to \"grep\" (optional).\n"

if [ "${DIR}" == "-h" ] ; then
echo -e "${USAGE}"
exit 1
elif [ -z "${DIR}" ] || [ -z "${CH_STR}" ] ; then
echo -e "Missing arguments...\nTry ${0} -h for brief usage informations."
exit 1
elif [ ! -d "${DIR}" ] ; then
echo "Directory ${DIR} does not exist..."
exit 1
fi

for CURDIR in $(find "${DIR}" -type d );
do
for FILE in "${CURDIR}"/*;
do
[ -f "$FILE" ] &&
STRING=$(grep ${OP} ${CH_STR} "${FILE}") &&
if [ -n "${STRING}" ] ; then
rm -v "${FILE}"
fi
done
done | tee -a /tmp/op.log___ && exit $PIPESTATUS

:ciauz:

Caleb
26-06-2006, 19:24
gentilissimo, lo provo al più presto

U-bahn
26-06-2006, 19:31
magari provalo su una copia della directory [non dovrebbe essere pericoloso, ma non si sa mai] :D

Caleb
26-06-2006, 20:04
funziona a meraviglia, grazie

prima o poi dovrò decidermi a imparare un po' di sano shell scripting...

Loading