ls or find (полный путь расположения файлов)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

olg.d
Сообщения: 51

ls or find

Сообщение olg.d »

Читал маны ls, не могу сделать так чтоб был виден полный путь расположения файлов в папках (дерево), подскажите плиз как это можно сделать... нужно еще по создателю сортировать
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: ls or find

Сообщение diesel »

Читал маны ls, не могу сделать так чтоб был виден полный путь расположения файлов в папках (дерево)


тоже когда-то искал, но толи невнимательно, толи такого действительно нет. смудрил себе тогда велосипед типа:

Код: Выделить всё

diesel@beezir:~$ function path { echo `pwd`/`ls -d $1`; }
diesel@beezir:~$ path mpd/src/zeroconf.c
/home/diesel/mpd/src/zeroconf.c

я даю ему относительный путь, он мне выплевывает прямой (правда немного криво будет если ../ ./ юзать, но мну такого достаточно).
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: ls or find

Сообщение IMB »

Насколько я помню рекурсивный просмотр директории выводит полный путь.
Спасибо сказали:
olg.d
Сообщения: 51

Re: ls or find

Сообщение olg.d »

IMB писал(а):
12.01.2008 12:34
Насколько я помню рекурсивный просмотр директории выводит полный путь.

рекурсивный выводит все файлы, но без относительного пути (((
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: ls or find

Сообщение diesel »

olg.d писал(а):
12.01.2008 12:40
IMB писал(а):
12.01.2008 12:34
Насколько я помню рекурсивный просмотр директории выводит полный путь.

рекурсивный выводит все файлы, но без относительного пути (((

если нужно полный путь к каждому файлу в директории - просто скажи find'у полный путь к директории в которой надо смотреть .... типа find /home/diesel; если просто скажешь find, находясь в /home/diesel - он будет выдавать относительный путь.
Спасибо сказали:
olg.d
Сообщения: 51

Re: ls or find

Сообщение olg.d »

diesel писал(а):
12.01.2008 12:50
olg.d писал(а):
12.01.2008 12:40
IMB писал(а):
12.01.2008 12:34
Насколько я помню рекурсивный просмотр директории выводит полный путь.

рекурсивный выводит все файлы, но без относительного пути (((

если нужно полный путь к каждому файлу в директории - просто скажи find'у полный путь к директории в которой надо смотреть .... типа find /home/diesel; если просто скажешь find, находясь в /home/diesel - он будет выдавать относительный путь.

у меня около 200 юзеров и гдето 100 шар для них, настроены квоты, и когда квоты будут переполнятся я хочу видеть где у них и какой мусор лежит, просто юзера бухи.)))

diesel писал(а):
12.01.2008 12:50
olg.d писал(а):
12.01.2008 12:40
IMB писал(а):
12.01.2008 12:34
Насколько я помню рекурсивный просмотр директории выводит полный путь.

рекурсивный выводит все файлы, но без относительного пути (((

если нужно полный путь к каждому файлу в директории - просто скажи find'у полный путь к директории в которой надо смотреть .... типа find /home/diesel; если просто скажешь find, находясь в /home/diesel - он будет выдавать относительный путь.

у меня около 200 юзеров и гдето 100 шар для них, настроены квоты, и когда квоты будут переполнятся я хочу видеть где у них и какой мусор лежит, просто юзера бухи.)))
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: ls or find

Сообщение diesel »

olg.d писал(а):
12.01.2008 14:18
diesel писал(а):
12.01.2008 12:50
olg.d писал(а):
12.01.2008 12:40
IMB писал(а):
12.01.2008 12:34
Насколько я помню рекурсивный просмотр директории выводит полный путь.

рекурсивный выводит все файлы, но без относительного пути (((

если нужно полный путь к каждому файлу в директории - просто скажи find'у полный путь к директории в которой надо смотреть .... типа find /home/diesel; если просто скажешь find, находясь в /home/diesel - он будет выдавать относительный путь.

у меня около 200 юзеров и гдето 100 шар для них, настроены квоты, и когда квоты будут переполнятся я хочу видеть где у них и какой мусор лежит, просто юзера бухи.)))

хм. все это на одной машине? или смаунчено на одной машине? Допустим у тебя есть список директорий которые ты желаешь мониторить на размер:

Код: Выделить всё

diesel@beezir:/home$ cat /home/diesel/dir_list
/home/diesel
/home/vasiliy
/home/diesel_debian
/home/diesel_data
/home/diesel_legacy
/home/ftp


получить размер всех директорий и отсортировать их по размеру достаточно просто:

Код: Выделить всё

diesel@beezir:/home$ cat /home/diesel/dir_list |xargs du -s| sort -n
4           /home/ftp
38744   /home/diesel_legacy
1055260 /home/diesel_debian
1427104 /home/vasiliy
6325172 /home/diesel
25837468        /home/diesel_data


или если я хочу увидеть инфу полностью, можно так:

Код: Выделить всё

diesel@beezir:/home$ cat /home/diesel/dir_list |while read i; do echo `du -s $i` `ls -ld $i`; done|sort -n |awk '{print $2"; size:",$1"; owner:", $5}'
/home/ftp; size: 4; owner: root
/home/diesel_legacy; size: 38744; owner: diesel
/home/diesel_debian; size: 1055260; owner: diesel
/home/vasiliy; size: 1427104; owner: diesel
/home/diesel; size: 6325172; owner: diesel
/home/diesel_data; size: 25837468; owner: diesel


если положить в какой-нить файл, кусок этой строчки:

Код: Выделить всё

diesel@beezir:/home$ cat diesel/dsize.sh
#!/bin/bash
while read i; do echo `du -s $i` `ls -ld $i`; done|sort -n |awk '{print $2"; size:",$1"; owner:", $5}'


то можно и вот так делать:

Код: Выделить всё

diesel@beezir:/home$ find /lib/ -maxdepth 1 -mindepth 1 -type d |diesel/dsize.sh
/lib/firmware; size: 4; owner: root
/lib/i486-linux-gnu; size: 4; owner: root
/lib/alsa; size: 8; owner: root
/lib/oss-compat; size: 8; owner: root
/lib/lsb; size: 12; owner: root
/lib/linux-sound-base; size: 20; owner: root
/lib/init; size: 24; owner: root
/lib/udev; size: 180; owner: root
/lib/terminfo; size: 188; owner: root
/lib/security; size: 428; owner: root
/lib/discover; size: 528; owner: root
/lib/iptables; size: 780; owner: root
/lib/i686; size: 2456; owner: root
/lib/modules; size: 135284; owner: root


diesel@beezir:/home$ ls
diesel  diesel_data  diesel_debian  diesel_legacy  ftp  lost+found  vasiliy
diesel@beezir:/home$ ls |diesel/dsize.sh
ftp; size: 4; owner: root
diesel_legacy; size: 38744; owner: diesel
diesel_debian; size: 1055260; owner: diesel
vasiliy; size: 1427104; owner: diesel
diesel; size: 6325180; owner: diesel
diesel_data; size: 25837468; owner: diesel


ну или точнее формулируйте шо надо :)
Спасибо сказали:
olg.d
Сообщения: 51

Re: ls or find

Сообщение olg.d »

diesel писал(а):
12.01.2008 15:34
olg.d писал(а):
12.01.2008 14:18
diesel писал(а):
12.01.2008 12:50
olg.d писал(а):
12.01.2008 12:40
IMB писал(а):
12.01.2008 12:34
Насколько я помню рекурсивный просмотр директории выводит полный путь.

рекурсивный выводит все файлы, но без относительного пути (((

если нужно полный путь к каждому файлу в директории - просто скажи find'у полный путь к директории в которой надо смотреть .... типа find /home/diesel; если просто скажешь find, находясь в /home/diesel - он будет выдавать относительный путь.

у меня около 200 юзеров и гдето 100 шар для них, настроены квоты, и когда квоты будут переполнятся я хочу видеть где у них и какой мусор лежит, просто юзера бухи.)))

хм. все это на одной машине? или смаунчено на одной машине? Допустим у тебя есть список директорий которые ты желаешь мониторить на размер:

Код: Выделить всё

diesel@beezir:/home$ cat /home/diesel/dir_list
/home/diesel
/home/vasiliy
/home/diesel_debian
/home/diesel_data
/home/diesel_legacy
/home/ftp


получить размер всех директорий и отсортировать их по размеру достаточно просто:

Код: Выделить всё

diesel@beezir:/home$ cat /home/diesel/dir_list |xargs du -s| sort -n
4           /home/ftp
38744   /home/diesel_legacy
1055260 /home/diesel_debian
1427104 /home/vasiliy
6325172 /home/diesel
25837468        /home/diesel_data


или если я хочу увидеть инфу полностью, можно так:

Код: Выделить всё

diesel@beezir:/home$ cat /home/diesel/dir_list |while read i; do echo `du -s $i` `ls -ld $i`; done|sort -n |awk '{print $2"; size:",$1"; owner:", $5}'
/home/ftp; size: 4; owner: root
/home/diesel_legacy; size: 38744; owner: diesel
/home/diesel_debian; size: 1055260; owner: diesel
/home/vasiliy; size: 1427104; owner: diesel
/home/diesel; size: 6325172; owner: diesel
/home/diesel_data; size: 25837468; owner: diesel


если положить в какой-нить файл, кусок этой строчки:

Код: Выделить всё

diesel@beezir:/home$ cat diesel/dsize.sh
#!/bin/bash
while read i; do echo `du -s $i` `ls -ld $i`; done|sort -n |awk '{print $2"; size:",$1"; owner:", $5}'


то можно и вот так делать:

Код: Выделить всё

diesel@beezir:/home$ find /lib/ -maxdepth 1 -mindepth 1 -type d |diesel/dsize.sh
/lib/firmware; size: 4; owner: root
/lib/i486-linux-gnu; size: 4; owner: root
/lib/alsa; size: 8; owner: root
/lib/oss-compat; size: 8; owner: root
/lib/lsb; size: 12; owner: root
/lib/linux-sound-base; size: 20; owner: root
/lib/init; size: 24; owner: root
/lib/udev; size: 180; owner: root
/lib/terminfo; size: 188; owner: root
/lib/security; size: 428; owner: root
/lib/discover; size: 528; owner: root
/lib/iptables; size: 780; owner: root
/lib/i686; size: 2456; owner: root
/lib/modules; size: 135284; owner: root


diesel@beezir:/home$ ls
diesel  diesel_data  diesel_debian  diesel_legacy  ftp  lost+found  vasiliy
diesel@beezir:/home$ ls |diesel/dsize.sh
ftp; size: 4; owner: root
diesel_legacy; size: 38744; owner: diesel
diesel_debian; size: 1055260; owner: diesel
vasiliy; size: 1427104; owner: diesel
diesel; size: 6325180; owner: diesel
diesel_data; size: 25837468; owner: diesel


ну или точнее формулируйте шо надо :)

спасиб. обязательно попробую, вообще это все я делаю для доменных пользователей на САМБА-ресурсе
Спасибо сказали: