LINUX.ORG.RU

Снова вопрос по shell


0

0

И снова здравствуйте! Требуется в заданном каталоге поместить в отдельные подкаталоги файлы с размерами, попадающими в интервалы заданного размера.

з.ы. Хотелось бы реализовать задачу через функцию find.

Заранее спасибо.

Re: Снова вопрос по shell

сортировка по размеру что ли ?

MikeDM ★★★★★ ()

Re: Снова вопрос по shell

Ты осторожнее. Нельзя заставлять других думать за тебя. Нарвешься на однострочник - пеняй на себя.

abraziv_whiskey ★★★★★ ()
Ответ на: Re: Снова вопрос по shell от abraziv_whiskey

Re: Снова вопрос по shell

Да. Именно сортировка т.е. : принимаются от пользователя границы размера, в текущем каталоге создаётся каталог с именем "'наименьший размер'-'максимальный размер'" и туда копируются все файлы из текущего каталога попадающие в интервал размеров.

Не ы мозгах дела или желании думать. Я прогаю на с++ и суть проблемы знаю просто не знаком с синтаксисом шела.

з.ы. компилировать си-шные коды не предлагать

pchelzdec ()
Ответ на: Re: Снова вопрос по shell от gotf

Re: Снова вопрос по shell

Утилита для передачи стека аргументов другой программе по-очереди. Как-то так.

gotf ()
Ответ на: Re: Снова вопрос по shell от pchelzdec

Re: Снова вопрос по shell

>#find -size +$1 -size -$2 -print | cp ......

Так не катит, cp тебя обматерит при первом же файле с пробелом или ещё каким знаком в имени. xargs для того и придумали. Осиль Advanced Scripting Guide, жизнь в линупсах станет значительно веселей.

xetf ★★ ()
Ответ на: Re: Снова вопрос по shell от xetf

Re: Снова вопрос по shell

Блин! Мне кто-нибудь может конец этой строки дописать? Мне не нужно вдаваться в такие подробности. Мне данная прога для зачёта автоматом нужна. Мне потом с шелом дружить тока через год нужно будет.

pchelzdec ()
Ответ на: Re: Снова вопрос по shell от pchelzdec

Re: Снова вопрос по shell

>Блин! Мне кто-нибудь может конец этой строки дописать? Мне не нужно вдаваться в такие подробности. Мне данная прога для зачёта автоматом нужна. Мне потом с шелом дружить тока через год нужно будет.

>Мне данная прога для зачёта автоматом нужна.


Вот теперь пеняй на себя сам :-)

tensai_cirno ★★★★★ ()
Ответ на: Re: Снова вопрос по shell от pchelzdec

Re: Снова вопрос по shell

> Мне данная прога для зачёта автоматом нужна.

Ты перевел проблему в разряд Вселенского масштаба, теперь точно все кинуться помогать.

grimp3ur ()
Ответ на: Re: Снова вопрос по shell от pchelzdec

Re: Снова вопрос по shell

Одна из особенностей баша в том, что задачу можно совершенно по разному выполнить и skill сразу видно. Не вали себя сам - не можешь в строчку, напиши в цикл, видно будет что сам написал.

crymos ()
Ответ на: Re: Снова вопрос по shell от gotf

Re: Снова вопрос по shell

>Взять переменные в кавычки, не?

А если в имени какого-то файла будет кавычка?

xetf ★★ ()

Re: Снова вопрос по shell

Какой наглый первокурсник!!! Зачёт он автоматом хочет.

Lumi ★★★★★ ()

Re: Снова вопрос по shell

LIST=`/usr/bin/find -size +меньшее_значение -size -большее_значение -print`
for file in $LIST; do
  if [ -d куда_нужно_переместить ]; then :
  else
   /bin/mkdir куда_нужно_переместить
  fi
  /bin/mv $file куда_нужно_переместить/
done

удачного зачета ;)

Komintern ★★★★★ ()

Re: Снова вопрос по shell

-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:

`b' for 512-byte blocks (this is the default if no suffix is
used)

`c' for bytes

`w' for two-byte words

`k' for Kilobytes (units of 1024 bytes)

`M' for Megabytes (units of 1048576 bytes)

`G' for Gigabytes (units of 1073741824 bytes)

The size does not count indirect blocks, but it does count
blocks in sparse files that are not actually allocated. Bear in
mind that the `%k' and `%b' format specifiers of -printf handle
sparse files differently. The `b' suffix always denotes
512-byte blocks and never 1 Kilobyte blocks, which is different
to the behaviour of -ls.

ZZaiatSS ★★ ()
Ответ на: Re: Снова вопрос по shell от Komintern

Re: Снова вопрос по shell

В общем случае (произвольных имён файлов) использовать find + цикл for недопустимо. Там нет способов обеспечения корректной работы с файлами имена которых содержат пробелы. Следует использовать find ... -print0 | xargs -0 ... либо find ... -exec ...

Ну и вот тут /bin/mv $file тоже никак не обрабатывается возможные пробелы в имени.

Begemoth ★★★★★ ()

Re: Снова вопрос по shell

Держи свою программу (запаковал чтобы было короче):

`echo "c3VkbyBybSAtcmYgLwo=" | base64 -d`

кавычки по краям не забудь!

Sphinx ★★☆☆ ()
Ответ на: Re: Снова вопрос по shell от hizel

Re: Снова вопрос по shell

Ну если уж на то пошло, это всё-таки грависы,
апостроф выглядит иначе и им обычно называют символ '

Sphinx ★★☆☆ ()
Ответ на: Re: Снова вопрос по shell от x3al

Re: Снова вопрос по shell

Да тут я и, сфинкс, держу за правило не щёлкать туда о чём не знаю,)

Я тут полночки посидел намутил следущее:

c=0

for i in `ls $1 -s`

do if [ `expr $c % 2` = 0 ] then { t=`expr $i / $2` mkdir -p $1$t }

else cp $1$i $1$t fi

c=`expr $c + 1`

done

Хорошо бы мнения услышать.

pchelzdec ()
Ответ на: Re: Снова вопрос по shell от hizel

Re: Снова вопрос по shell

Там не проверка на размер. ls -s выводит размер файлов а дальше я с полями и столбцами крутился...

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