Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как переместить файлы ? / 9 сообщений из 9, страница 1 из 1
28.04.2010, 21:13
    #36604163
Fine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
Код: plaintext
filename=some_file_name;

После выполнения какого то скрипта, к имени файл добавляется либо .ok, либо .error.

В папке также есть файлы, имена которых содетжат $filename.
Как переместить именно эти файлы, которые содержат .ok или .error ?

В документации нашел решение таких вопросов, согласно чего код должен выглядеть типа:
Код: plaintext
1.
/bin/mv /home/srcfolder/$filename{.ok .error } /home/destfolder
Но не работает.

Честно говоря вопрос можно решить при помощи следующих двух строк:
Код: plaintext
1.
/bin/mv /home/srcfolder/$filename.error /home/destfolder
/bin/mv /home/srcfolder/$filename.ok /home/destfolder

Но хотелось бы более компактное решение.
Спасибо.
...
Рейтинг: 0 / 0
28.04.2010, 22:49
    #36604232
Как переместить файлы ?
Fine,

перечисление делается через запятую

a{b,c}
...
Рейтинг: 0 / 0
28.04.2010, 22:50
    #36604234
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
Fine,
Наверное, в документации было написно, что код должен выглядеть так
Код: plaintext
/bin/mv /home/srcfolder/$filename.{ok,error} /home/destfolder
По крайней мере, если это была документация по bash.
...
Рейтинг: 0 / 0
29.04.2010, 22:29
    #36606306
Fine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
Этот вариант я буду попробовать.
Спасибо
...
Рейтинг: 0 / 0
30.04.2010, 00:30
    #36606405
PA3YM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
Fine,

А чем не устраивает (согласно man mv) вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#cd /tmp
#md zdir
# touch  001 .ok
# touch  001 .error
# mv  001 .ok  001 .error zdir
#ls zdir
 001 .error   001 .ok
...
Рейтинг: 0 / 0
01.05.2010, 22:43
    #36608705
Fine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
PA3YMFine,

А чем не устраивает (согласно man mv) вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#cd /tmp
#md zdir
# touch  001 .ok
# touch  001 .error
# mv  001 .ok  001 .error zdir
#ls zdir
 001 .error   001 .ok


Дело в том, что один из вариантов .error .ok будут отсутствовать. И система дает алерт "Файл отсутствует...."
...
Рейтинг: 0 / 0
01.05.2010, 22:51
    #36608707
Fine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
avb1003Fine,
Наверное, в документации было написно, что код должен выглядеть так
Код: plaintext
/bin/mv /home/srcfolder/$filename.{ok,error} /home/destfolder
По крайней мере, если это была документация по bash.

У меня вот така конкретная ситуация:
srcfolder
loaded_03112010113501.dat
loaded_03112010113502.dat.01012010.error
loaded_03112010113522.dat.05012010.ok

..............input/srcfolder>s=loaded; mv /home/fine/input/srcfolder/$s*dat*{ok, error} /home/fine/input/destfolder/
mv: cannot stat `/home/fine/input/srcfolder/loaded*dat*{ok,': No such file or directory
mv: cannot stat `error}': No such file or directory
...
Рейтинг: 0 / 0
02.05.2010, 00:17
    #36608735
Как переместить файлы ?
Fine,

пробел лишний.
...
Рейтинг: 0 / 0
02.05.2010, 05:45
    #36608780
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить файлы ?
Fine,
Нужно внимательней читать либо ответы в форуме, либо документацию:
man bash
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...
EXPANSION
       Expansion is performed on the command line  after it has been split into 
        words .  There are seven kinds of expansion performed: brace  expansion,
...
 Brace Expansion
...
       ..............................  Patterns to be brace expanded take the
       form of an optional preamble, followed by either a series of  comma-sep- 
        arated  strings or a sequence expression between  a pair of braces ,  fol-
       lowed  by  an  optional  postscript.  ...
....
       A  correctly-formed  brace  expansion must contain unquoted opening and
       closing braces, and at least one unquoted comma  or  a  valid  sequence
       expression.    Any incorrectly formed brace expansion is left unchanged .
....
То есть ваша строка
Код: plaintext
mv /home/fine/input/srcfolder/$s*dat*{ok, error} /home/fine/input/destfolder/
сначала разбивается bash на 4 слова:
Код: plaintext
1.
2.
3.
 1 :mv
 2 :/home/fine/input/srcfolder/$s*dat*{ok,
 3 :error}
 4 :/home/fine/input/destfolder/
и ни одно из них не содержит правильного выражения для расширения фигурных скобок.
P.S. Для "тренировки" можно использовать команду echo:
Код: plaintext
1.
2.
3.
$ echo a{b,c}
ab ac
$ echo a{b, c}
a{b, c}
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как переместить файлы ? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]