Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Скрипт замены суффиксов имен на первые литеры имени файла  (Прочитано 1031 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн michael_z

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Доброго времени суток. Необходима рекурсивная замена для всех файлов, имеющих размер меньше заданного, суффиксов имен на первые литеры имен файлов. При этом скрипт должен выводить подсказку, если указан параметр «?», а также, если параметры опущены, то их значения должны быть запрошены у пользователя. Как реализовать последнее не знаю. Сначала пришла мысль использовать read, но ведь он с переменными работает, а аргументы - $1(директория) $2(размер в байтах) получаются нельзя с read использовать. Также появилась мысль перезапуска скрипта в случае отсутствия аргументов, но как это реализовать, не знаю. Вот код скрипта, если неверно, то что исправить? (есть сомнения насчет команды rfe - замены старого суффикса на новый)
#!/bin/bash -xv
if ![-n "$1"]
then
echo "enter two arguments"
read $1 $2
if [$1-ne?]
then
for file in 'find $1 -size -$2'
do
dir_name=$(dirname $file)
file_name=$(basename $file)
prefix=$(expr substr $file_name 1 1)
#newfilename=$dir_name/$prefix
rfe * $prefix
fi
if [$1-eq?]
then
cat ./help.txt
fi
done 

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Код: (bash) [Выделить]
#!/bin/bash
if [ "$1" == "?" ]
then
    echo "Подсказка: ... "
    exit 1
fi
case $# in
    2) dirname=$1
       fsize=$2 ;;
    0) read -p "Введите адрес директории >>>  " dirname
       read -p "Введите размер файлов для замены суфикса >>>  " fsize ;;
    *) echo "Использование: скрипт директория размер"
       exit 1 ;;
if [ -d "$dirname" ]
then
    for file in $(find "$dirname" -type f -size -$fsize)
    do
        suffix={file##*/}
        mv "$file" "${file%.*}.${suffix::1}"
    done
else
    echo "Неправильное имя/адрес директории"
    exit 1
fi
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.027 секунд. Запросов: 25.