изменить скрипт оболочки для удаления папок и файлов - PullRequest
1 голос
/ 01 сентября 2010

Мой сценарий оболочки:

#!/bin/bash
if [ $# -lt 2 ]
then
    echo "$0 : Not enough argument supplied. 2 Arguments needed."
    echo "Argument 1: -d for debug (lists files it will remove) or -e for execution."
    echo "Followed by some path to remove files from. (path of where to look) "
    exit 1
fi

if test $1 == '-d'
then
    find $2 -mmin +60 -type f -exec ls -l {} \;
elif test $1 == '-e'
then
    find $2 -mmin +60 -type f -exec rm -rf {} \;
fi

В основном это позволит найти файлы в заданном каталоге в качестве второго аргумента и либо список (-d для аргумента 1), либо удалить (-e для аргумента 1) файлы, измененные> 60 минут назад.

Как я могу переделать это, чтобы также удалить папки?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010
  • Удалить -type f
  • , изменив ls -l на ls -ld

Изменение 1 перечислит все, а не только файлы.Это включает в себя ссылки.Если вас не устраивает перечисление / удаление чего-либо, кроме файлов и каталогов, вам нужно отдельно перечислить / удалить файлы и каталоги следующим образом:

if test $1 == '-d'
then
    find $2 -mmin +60 -type f -exec ls -ld {} \;
    find $2 -mmin +60 -type d -exec ls -ld {} \;
elif test $1 == '-e'
then
    find $2 -mmin +60 -type f -exec rm -rf {} \;
    find $2 -mmin +60 -type d -exec rm -rf {} \;
fi

Изменение 2 необходимо, так как ls -l в каталоге будет отображатьфайлы в каталогах.

1 голос
/ 01 сентября 2010
#!/bin/bash
if [ $# -lt 2 ]
then
    echo "$0 : Not enough argument supplied. 2 Arguments needed."
    echo "Argument 1: -d for debug (lists files it will remove) or -e for execution."
    echo "Followed by some path to remove files from. (path of where to look) "
    exit 1
fi

if test $1 == '-d'
then
    find $2 -mmin +60 -type d -exec ls -l {} \;
    find $2 -mmin +60 -type f -exec ls -l {} \;
elif test $1 == '-e'
then
    find $2 -mmin +60 -type d -exec rm -rf {} \;
    find $2 -mmin +60 -type f -exec rm -rf {} \;
fi

Это должно сработать для вас.

...