Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / шел: имена файлов с пробелами в операторе for ? + / 16 сообщений из 16, страница 1 из 1
29.07.2005, 04:08:20
    #33190547
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#!/bin/sh.exe 
nm=lss

#echo $IFS >ifs. 1 

#  IFS="\\n\\t"

#echo $IFS >ifs. 2 

  for f in `ls - 1 `  
  do
    echo "-->"  $f  "<--"
  done


вот чето никак не могу такую директорию распечатать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 1   2   3   4 
 1   2   3   4 . 1  d d d
 2 
 3 
 4 
 5 
 6 
ifs. 1 
ifs. 2 
lss.sh
sh.cmd
xx
или не берет длинное имя (если закоментарить IFS)
или в f кладет всю директорию ( если раскоментарить)
...
Рейтинг: 0 / 0
29.07.2005, 05:02:01
    #33190551
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
вот через файлы придумал.
а без вывода в файл хочется.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  ls - 1   > .ls
  exec < .ls 
  while   read  f
  do
    echo "-->"  "$f"  "<--"
  done
  exec   < nul
  rm .ls
...
Рейтинг: 0 / 0
29.07.2005, 10:03:16
    #33190796
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
tchingiz , а Вы не слишком усложнили?
Что, если заменить

for i in `ls -1`

на

for i in *
...
Рейтинг: 0 / 0
29.07.2005, 10:07:32
    #33190813
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
но в принципе и так работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/bin/sh

IFS="
"


for i in `ls - 1 `
do
 echo  "$i"
done

хотя уверен что лучше и проще первый вариант.

А в чем смысла кстати IFS="\\n\\t" в Вашем варианте?
...
Рейтинг: 0 / 0
29.07.2005, 10:38:41
    #33190923
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
А что вообще весь этот скрипт должен делать?
Не исключено, что есть более простые методы...
...
Рейтинг: 0 / 0
30.07.2005, 04:29:37
    #33192728
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
Hул
у меня не работает мой. я на виндюках гнутым шелом пользуюсь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
--> G:/db_save/ftp/ln/0 <--
--> G:/db_save/ftp/ln/1 <--
--> 2 <--
--> 3 <--
--> 4 <--
--> G:/db_save/ftp/ln/1 <--
--> 2 <--
--> 3 <--
--> 4.1 <--
--> d <--
--> d <--
--> d <--
--> G:/db_save/ftp/ln/2 <--
--> G:/db_save/ftp/ln/3 <--
--> G:/db_save/ftp/ln/4 <--
--> G:/db_save/ftp/ln/5 <--
--> G:/db_save/ftp/ln/6 <--
--> G:/db_save/ftp/ln/ifs.1 <--
--> G:/db_save/ftp/ln/ifs.2 <--
--> G:/db_save/ftp/ln/lss.sh <--
--> G:/db_save/ftp/ln/sh.cmd <--
--> G:/db_save/ftp/ln/xx <--
--> G:/db_save/ftp/ln/yy <--

#############    А Ваш работает

G:\db_save\ftp\ln>sh.exe  lss.sh          
--> G:/db_save/ftp/ln/0 <--
--> G:/db_save/ftp/ln/1 2 3 4 <--
--> G:/db_save/ftp/ln/1 2 3 4.1 d d d <--
--> G:/db_save/ftp/ln/2 <--
--> G:/db_save/ftp/ln/3 <--
--> G:/db_save/ftp/ln/4 <--
--> G:/db_save/ftp/ln/5 <--
--> G:/db_save/ftp/ln/6 <--
--> G:/db_save/ftp/ln/ifs.1 <--
--> G:/db_save/ftp/ln/ifs.2 <--
--> G:/db_save/ftp/ln/lss.sh <--
--> G:/db_save/ftp/ln/sh.cmd <--
--> G:/db_save/ftp/ln/xx <--


в этой переменной содержится пробел, ньюлайн и табуляция.
эти символы разляют слова. Я пытался убрать пробел, а оставить только ньюлайны.
оказалось не дочитал. значение этой переменной используется только при подстановке
параметров и вывода команд, а также при чтении входного потока командой реад.
...
Рейтинг: 0 / 0
30.07.2005, 04:32:59
    #33192729
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
ДокАл
не исключено.
я состояние директорий синхронизирую.
у нас положили файлы пользователей не в блобы в бд, а в файловую систему,
рядом с базой данных. теперь надо копии делать.

вот там живет предверсия скрипта

http://sql.ru/forum/actualthread.aspx?tid=198807&hl=syncdir#1691000
...
Рейтинг: 0 / 0
30.07.2005, 10:12:35
    #33192766
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
man find ?
или использовать какой-нить стандартный скрипт, благо их миллион
...
Рейтинг: 0 / 0
31.07.2005, 05:49:14
    #33193049
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
1
шутку про файнд не понял.
файнд же ищет же?
2
а есть ли возможность сократить число скриптов для просмотра и ознакомления
с миллиона, ну хотя бы до двух тысяч?
...
Рейтинг: 0 / 0
31.07.2005, 15:39:07
    #33193139
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
А про find вовсе не шутка, советую почитать мануал внимательно.
Возможность есть, конечно. Для этого нужно написать тут, что же конкретно нужно)
...
Рейтинг: 0 / 0
03.08.2005, 04:21:25
    #33198001
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
рядом с базой данных лежит набор файлов, аккуратно разложенный по дереву директорий - директория а..
эти файлы надо бекапить в другую директорию б с частичным путем.
(синхронизировать директории а и б)
тоесть если /а/x/f удален, то и надо удалить /b/x/f;
если /a/x/g добавлен или изменен, то надо его скопировать в директорию /b/x.
ну в общем все.
...
Рейтинг: 0 / 0
03.08.2005, 10:25:05
    #33198317
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
Всё это делается локально или по сети?
...
Рейтинг: 0 / 0
03.08.2005, 22:15:24
    #33200480
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
в офисе - по сети - с одной машины на другую.

есть база на удаленной машины. там бекапится локально,
вычисляется разница и новые-обновленные_файлы_и_имена_удаленных_файлов передаются через фтп сервер в офис.
...
Рейтинг: 0 / 0
03.08.2005, 22:38:09
    #33200502
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
Может быть, стоит юзать rsync
...
Рейтинг: 0 / 0
03.08.2005, 23:54:13
    #33200556
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
http://samba.org/rsync/FAQ.html
да вроде все отладил уже.
фтпклиент ругается когда длинные файлы. больше 30 метров.
а файлы при этом передаются хорошо.
буду их наверно зипом сворачивать, добавляется контрольная инфа
...
Рейтинг: 0 / 0
04.08.2005, 00:07:15
    #33200560
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шел: имена файлов с пробелами в операторе for ? +
хвалят этот рсинк. машины у меня все равно с виндюками.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / шел: имена файлов с пробелами в операторе for ? + / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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