Nuri @ 10-04-2008 06:13:00

Я нуб в shell-программировании, но понадобилось скромненький скриптик написать, который перебирает файлы в директории и выполняет с каждым определенные действия. Затык с командой ls :) Подскажите, она может выводить список файлов с полным путем? Например, я пишу:

Код:

ls -1 /media/mmc/folder

она соответственно выводит
file1
file2
...
filen

А заставить ее сделать так

/media/mmc/folder/file1
/media/mmc/folder/file2
...
/media/mmc/folder/filen

возможно? Или есть какой-то другой путь, через конкатенацию строк, например?

gLobster @ 10-04-2008 06:37:06

for i in `ls /media/mmc/folder`; do echo "/media/mmc/folder$i"; done;

Nuri @ 10-04-2008 06:42:22

Вах, премного благодарен. Буду дальше копать :)

kemm @ 10-04-2008 22:35:22

gLobster говорит:

for i in `ls /media/mmc/folder`; do echo "/media/mmc/folder$i"; done;

Код:

for i in /media/mmc/folder/*; do echo "$i"; done

тогда уж

Nuri @ 10-04-2008 23:12:42

В принципе, работают оба варианта :) Спасибо за ликбез. Скриптик для dcraw написал.

GET @ 11-04-2008 03:23:48

В предложенном способе есть недостаток, не будет перебирать файлы, начинающиеся с точки. Можно починить следующим образом:

Код:

for i in /media/mmc/folder/* /media/mmc/folder/.*; do echo "$i"; done

Но тут тоже есть маленький недостаток, оно . и .. тоже перебирает. Все это, разумеется, решабельно еще одной строкой кода.

aboris @ 11-04-2008 03:39:51

GET, из пушки по воробьям? Вроде речь про картинки из фотоаппарата...

Nuri @ 11-04-2008 04:39:35

GET говорит:

В предложенном способе есть недостаток, не будет перебирать файлы, начинающиеся с точки. Можно починить следующим образом:

Код:

for i in /media/mmc/folder/* /media/mmc/folder/.*; do echo "$i"; done

Но тут тоже есть маленький недостаток, оно . и .. тоже перебирает. Все это, разумеется, решабельно еще одной строкой кода.

Разумеется, я догадался :) Поэтому написал /media/mmc/folder/*.NEF :)