LINUX.ORG.RU

Скрипт замены суффиксов имен на первые литеры имени файла

 


0

2

Доброго времени суток. Необходима рекурсивная замена для всех файлов, имеющих размер меньше заданного, суффиксов имен на первые литеры имен файлов. При этом скрипт должен выводить подсказку, если указан параметр «?», а также, если параметры опущены, то их значения должны быть запрошены у пользователя. Как реализовать последнее не знаю. Сначала пришла мысль использовать 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


Последнее исправление: beastie (всего исправлений: 1)

#!/bin/bash

FOO=${1:-$(read -p "Enter FOO: " FOO; echo $FOO)}
echo ">$FOO<"
anonymous
()

посоны, накатайте с perl-rename, мне лень

anonymous
()

1. Научись пользоваться lorcode
2. С просьбами выполнить домашние задания обычно обращаются в Job (а это явно домашка, т.к. тот бред, что ты накатал, даже отдаленно работать не сможет).

Eddy_Em ☆☆☆☆☆
()

размер меньше заданного

find . -type f -size -[размер в байтах]c

скрипт должен выводить подсказку, если указан параметр "?"

Если параметр может быть только один, то просто проверяй количество аргументов, а потом [ $1 = '?' ] && help, help отдельной функцией скрипта

если параметры опущены, то их значения должны быть запрошены у пользователя

Коли уж параметров несколько, то забульбенивай для их анализа getopt. Причем, заранее пустышками эти переменные инициализируй, и если какая-то пустая, то попроси ее ввести.

суффиксов имен на первые литеры имен файлов

Сколько первых литер? Можно sed попробовать.

Eddy_Em ☆☆☆☆☆
()

Гррр! LORCODE, паразиты! Поправил тебе, не меня ничего местами. И как видешь, у тебя do..done совсем порвало. И fi в конце не хватает.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)

[$1-ne?]

в bash правильно

if [[ "$1" != "?" ]]
пробелы имеют значение! Кавычки тоже! И скобки. Одиночные скобки нужны для проверки файлов.

for file in 'find $1 -size -$2'

неправильно. Правильное решение:

while read FILE; do
  # тело цикла
done< <(find "$1" -size -"$2")

emulek
()
Ответ на: комментарий от Eddy_Em

Блин, на сях это проще сделать!

нет, на сях сложнее. Почитай просьбы сделать домашки на сях, те, что с кодом. На баше так не нарукожопишь.

emulek
()
Ответ на: комментарий от emulek

На баше так не нарукожопишь

Вот что верно, то верно. Но таки лично я не знаю, как полностью решить эту задачу на баше. Но знаю, как на сях.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.