LINUX.ORG.RU

SHELL - Проверка на существующие папки


0

0

Каким образом я могу проверить на наличие папки у всех пользователей?

Мне нужно вывести список путей к папкам только там где они есть.

Тоесть есть пользователи a,b,c. У пользователей a,c есть папка test.

Мне нужно чтобы скрипт проверил у каких пользователей есть папка и выдал полный путь к ней.

Тоесть так:

/home/a/test
/home/c/test


Ответ на: комментарий от anarquista

Если нужны именно ВСЕ пользовател системы, то можно анализировать /etc/passwd…

Полагаю, что нужны не все, ну, так тут сами разберётесь…

anarquista ★★★★★
()

Да! Как это я сразу не заметил!

Что это за словечко у Вас — «папка»? Извольте-ка называть вещи своми именами — каталогами и директориями.

anarquista ★★★★★
()
Ответ на: комментарий от anarquista

благодарю за быстрый ответ.
смысл осилил.

я до этого тупо пытался заменить файлы всем юзерам даже если у них этой папки не существовало. решил узнать способ покошернее.

al1as
() автор топика
Ответ на: комментарий от anarquista

как раз таки и все. в помощь мне я использовал переменную
users=$(cut -d':' -f1 /etc/passwd)


ps: насчёт каталогов, дурная привычка :E

al1as
() автор топика

for dir in /home/*/test; do test -d "$dir" && do_something; done

вместо do_something может быть просто echo "$dir", это если нужно только вывести.

arsi ★★★★★
()
Ответ на: комментарий от al1as

> как раз таки и все. в помощь мне я использовал переменную users=$(cut -d':' -f1 /etc/passwd)

Если все, то всё правильно:

for i in `cut -d':' -f1 /etc/passwd`; do echo ~$i/ImportantDir ; done

Про test и [], на предмет проверки, выше уже сказали.

sin_a ★★★★★
()

благодарю всех за помощь

al1as
() автор топика

awk -vt="testdir" -F: '$3 > 999 {print "[ -d \""$6"/"t"\" ] && echo \""$6"/"t"\""}' /etc/passwd

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.