Linux.org.ua

Технічні питання => Адміністрування => Гілку створено: Сергій Лисовенко від 2007-06-07 15:04:04

Тема: find
Автор: Сергій Лисовенко від 2007-06-07 15:04:04
Як примусити find закоментовувати рядки лапками, щоб передати їх до іншої програми?

Наприклад:for i in `find -type f` ; do chmod -x $i ; done дасть купу помилок, якщо попадуться файли з пробілами. От як зробити щоб масив i  мав члени:

'./some dir/some file 1'
'./some dir/some file 2'
'./some dir/some file 3'
'./some dir/some file 4'
'./some dir/some file e.t.c.'

Тобто щоб і $i не розбивалась на пробілах (власне в цьому і проблема бо в файнді ще можна прінт задати так, щоб імена в лапки взяло, але пробілами все поб'є).
Просто іноді доводиться міняти режими доступу до файлів, щоб прибрати дозвіл на виконання і якщо натрапити на директорію - їй не буде корисною заборона виконуватись ;) - клятий фат замучив.
Тема: Re: find
Автор: Михайло Даниленко від 2007-06-07 16:11:25
Тема: Re: find
Автор: Praporshic від 2007-06-07 16:46:44
Наприклад:for i in `find -type f` ; do chmod -x $i ; done
Конкретний приклад вирішується таким чином:
find -type f -exec chmod -x {} +
Тема: Re: find
Автор: Сергій Лисовенко від 2007-06-07 16:52:11
А як масив до циклу закинути?

_____________________________________

$ find -type f -exec chmod -x {} +
find: missing argument to `-exec'
Тема: Re: find
Автор: Михайло Даниленко від 2007-06-07 17:00:48
А як масив до циклу закинути?
for i in "${list[@]}" ; do
       echo "${i}" # Лапки обов'язкові!
done
або
for (( i=${#list[@]}; i--; )) ; do
       echo "#${i}: ${list[${i}]}"
done
Тема: Re: find
Автор: Михайло Даниленко від 2007-06-07 17:20:18
$ find -type f -exec chmod -x {} +
find: missing argument to `-exec'

$ find --version # ?
$ man find # /-exec і подивіться, чи є там варіант команди з плюсиком.
           # коли ні - значить у вас дивна версія find, замініть + на \;
Тема: Re: find
Автор: ofcnz від 2007-06-07 22:12:13
Як примусити find закоментовувати рядки лапками, щоб передати їх до іншої програми?

Наприклад:for i in `find -type f` ; do chmod -x $i ; done


find . -type f -exec chmod -x {} \;
Тема: Re: find
Автор: Praporshic від 2007-06-07 23:09:13
$ find -type f -exec chmod -x {} +
find: missing argument to `-exec'

Можливі варіації на тему плюса в кінці - зазвичай find`ом користуюсь під FreeBSD, і там багацько параметрів відрізняються від лінуксових версій.
Тема: Re: find
Автор: Михайло Даниленко від 2007-06-07 23:16:41
Можливі варіації на тему плюса в кінці - зазвичай find`ом користуюсь під FreeBSD, і там багацько параметрів відрізняються від лінуксових версій.
На мому LFS та у Дебі працює.
GNU find version 4.2.28
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION
GNU find version 4.2.28
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION
Тема: Re: find
Автор: Володимир Лісівка від 2007-06-08 16:02:15
А як масив до циклу закинути?

<u>_________________________________</u>

$ find -type f -exec chmod -x {} +
find: missing argument to `-exec'

Має бути:
$ find -type f -exec chmod -x \{\} \;