powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как переместить файлы ?
9 сообщений из 9, страница 1 из 1
Как переместить файлы ?
    #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
Как переместить файлы ?
    #36604232
Fine,

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

a{b,c}
...
Рейтинг: 0 / 0
Как переместить файлы ?
    #36604234
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fine,
Наверное, в документации было написно, что код должен выглядеть так
Код: plaintext
/bin/mv /home/srcfolder/$filename.{ok,error} /home/destfolder
По крайней мере, если это была документация по bash.
...
Рейтинг: 0 / 0
Как переместить файлы ?
    #36606306
Fine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот вариант я буду попробовать.
Спасибо
...
Рейтинг: 0 / 0
Как переместить файлы ?
    #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
Как переместить файлы ?
    #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
Как переместить файлы ?
    #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
Как переместить файлы ?
    #36608735
Fine,

пробел лишний.
...
Рейтинг: 0 / 0
Как переместить файлы ?
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как переместить файлы ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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