- перебор файлов в bash и использованиемспец символов в назван...,
phpcoder, 15:22 , 29-Май-08 (1)>Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. )find DIR -type f | while read FILENAME; do # здесь что-то с файлами делаем echo "$FILENAME" done
- перебор файлов в bash и использованиемспец символов в назван...,
stasmus, 16:12 , 29-Май-08 (2)>>Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. ) > >find DIR -type f | while read FILENAME; do ># здесь что-то с файлами делаем >echo "$FILENAME" >done Ага, спасибо, я пытался реализовать это так for FILENAME in `find . -type f` do # здесь что-то с файлами делаем cat "$FILENAME" done объясните пож-сто, почему не работает с for?
- перебор файлов в bash и использованиемспец символов в назван...,
phpcoder, 16:17 , 29-Май-08 (3)>for FILENAME in `find . -type f` >do ># здесь что-то с файлами делаем >cat "$FILENAME" >done > >объясните пож-сто, почему не работает с for? Не знаю, у меня и с for работает :-)
- перебор файлов в bash и использованиемспец символов в назван...,
madskull, 16:33 , 29-Май-08 (4)>Ага, спасибо, я пытался реализовать это так > >for FILENAME in `find . -type f` >do ># здесь что-то с файлами делаем >cat "$FILENAME" >done > >объясните пож-сто, почему не работает с for? потому что `find . -type f` "разворачивается" в список, разделенный пробелами. следовательно, и имена файлов рзбиваются на части имеющимися пробелами. кстати, должно работать
for FILENAME in *; do
и
find . -type f | while read FILENAME; do
причем вместо find можно и ls использовать
- про (не)экранирование,
Andrey Mitrofanov, 16:34 , 29-Май-08 (5)>>>Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. ) >Ага, спасибо, я пытался реализовать это так > >for FILENAME in `find . -type f` >do > >объясните пож-сто, почему не работает с for? Потому что после подстановки результата команды из `...` он, результат, интерпретируется шелом: имена с пробелами "разваливаются" на части, а с < > пытаютсся стать перенаправлениями из/в файл...
- про (не)экранирование,
stasmus, 16:45 , 29-Май-08 (6)> >Потому что после подстановки результата команды из `...` он, результат, интерпретируется шелом: имена с пробелами "разваливаются" на части, а с < > пытаютсся стать перенаправлениями из/в файл...А как вообще интерпретирует шел подобные ситуации (не обязательно например выборка по файлам, возможно некая последовательность awk grep... )?
- про (не)экранирование,
newser, 18:09 , 29-Май-08 (7)>> >>Потому что после подстановки результата команды из `...` он, результат, интерпретируется шелом: имена с пробелами "разваливаются" на части, а с < > пытаютсся стать перенаправлениями из/в файл... > >А как вообще интерпретирует шел подобные ситуации (не обязательно например выборка по >файлам, возможно некая последовательность awk grep... )? Об этом и многом другом, как ни странно, подробно написано в man bash. :)
|