I ' m пытается написать сценарий, который найдет все файлы размером более 1 МБ и по одному спрашивает пользователя, что делать с каждым файлом: удалить, сжать или пропустить.
Вот что у меня получилось:
find / -type f -size + 1000000c -exec echo "Файл найден:" {} \; -exec echo "(D) elete, (C) ompress, или (S) kip:" \;
Что произойдет дальше, так это то, что пользователь введет либо D, C, либо S, и соответствующая команда будет выполняется в файле, но я понятия не имею, как читать вводимые пользователем данные и реализовывать цикл «if» во время выполнения команды «find».
Я понимаю, что это вопрос для очень новичка, но я не мог найти ответа. Любая помощь приветствуется.
find / -type f -size +1000000c -exec your-shell-script {} \;
Пример сценария оболочки (не исчерпывающее решение)
#!/bin/bash
TargetFile="$1"
shift
if [ -z "$TargetFile" ]; then
echo "$0 must be invoked with a path to a file" >&2
exit 1
fi
while true; do
echo "(D)elete, (C)ompress, or (S)kip: $TargetFile" >&2
# Obtain a single keypress.
# You may wish to tune this behaviour e.g. remove the n1 option
read -rsn1 Action
# The case statement accepts the upper or lower case letters
# Tune to taste
case "$Action" in
D|d)
echo "Deletion Logic"
;;
S|s)
echo "Skip Logic"
break
;;
C|c)
echo "Compression Logic"
;;
*)
continue
;;
esac
break
done
exit
Я оставлю более тонкие детали реализации вам :)