Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. )
>Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. )find DIR -type f | while read FILENAME; do
# здесь что-то с файлами делаем
echo "$FILENAME"
done
>>Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. )
>
>find DIR -type f | while read FILENAME; do
># здесь что-то с файлами делаем
>echo "$FILENAME"
>doneАга, спасибо, я пытался реализовать это так
for FILENAME in `find . -type f`
do
# здесь что-то с файлами делаем
cat "$FILENAME"
doneобъясните пож-сто, почему не работает с for?
>for FILENAME in `find . -type f`
>do
># здесь что-то с файлами делаем
>cat "$FILENAME"
>done
>
>объясните пож-сто, почему не работает с for?Не знаю, у меня и с for работает :-)
>Ага, спасибо, я пытался реализовать это так
>
>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 использовать
>>>Как написать на bash цикл перебора всех файлов в директории. В директории содержаться файлы, в именах которых точно присутствуют спец. символы (пробел, <, > и пр. )
>Ага, спасибо, я пытался реализовать это так
>
>for FILENAME in `find . -type f`
>do
>
>объясните пож-сто, почему не работает с for?Потому что после подстановки результата команды из `...` он, результат, интерпретируется шелом: имена с пробелами "разваливаются" на части, а с < > пытаютсся стать перенаправлениями из/в файл...
>
>Потому что после подстановки результата команды из `...` он, результат, интерпретируется шелом: имена с пробелами "разваливаются" на части, а с < > пытаютсся стать перенаправлениями из/в файл...А как вообще интерпретирует шел подобные ситуации (не обязательно например выборка по файлам, возможно некая последовательность awk grep... )?
>>
>>Потому что после подстановки результата команды из `...` он, результат, интерпретируется шелом: имена с пробелами "разваливаются" на части, а с < > пытаютсся стать перенаправлениями из/в файл...
>
>А как вообще интерпретирует шел подобные ситуации (не обязательно например выборка по
>файлам, возможно некая последовательность awk grep... )?Об этом и многом другом, как ни странно, подробно написано в man bash. :)