LINUX.ORG.RU

вывод имен каталогов


0

1

Помогите пожалуйста написать следующую программу Shell-программа выводит с каталога имена тех файлов, которые содержат в себе каталоги. Имя каталогу заданно shell-парамметром.

выводит с каталога имена тех файлов, которые содержат в себе каталоги

А как вы себе представляете «содержание каталога в файле»? Или надо парсить текстовый файл, чтобы найти в нем нечто, смахивающее на путь к директории?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

Знаю, но судя по

выводит с каталога имена тех файлов, которые содержат в себе каталоги

здесь явно какой-то подвох.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

anonymous
()

делай уроки сам

anonymous
()
Ответ на: комментарий от MKuznetsov

Да, это самый оптимальный вариант.

Jetty ★★★★★
()

Какой шустрый, однако. Полторы минуты от одной темы до другой.

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

извини, вот правильная формулировка. Shell-программа выводит с каталога имена тех каталогов, которые содержат в себе другие каталоги. Имя каталогу заданно shell-параметром

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

а куда вписывать тут имя директории?

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

я просмотрел справку и написал так find /etc -type d -exec dirname {/igor/test/} \; | sort -u но мне просто выводит сообщение отказано в доступе и все. Что я делаю не так?

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

Нет, ты не прочитал справку:

-exec command ; Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of `;' is encountered. The string `{}' is replaced by the current file name being processed everywhere it occurs in the argu‐ ments to the command, not just in arguments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a `\') or quoted to protect them from expansion by the shell. See the EXAMPLES section for examples of the use of the -exec option. The specified command is run once for each matched file. The command is executed in the starting directory. There are unavoid‐ able security problems surrounding use of the -exec action; you should use the -execdir option instead.

EXAMPLES find /tmp -name core -type f -print | xargs /bin/rm -f

Find files named core in or below the directory /tmp and delete them. Note that this will work incorrectly if there are any filenames containing newlines, single or double quotes, or spaces.

find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

Find files named core in or below the directory /tmp and delete them, processing filenames in such a way that file or directory names containing single or double quotes, spaces or newlines are correctly handled. The -name test comes before the -type test in order to avoid having to call stat(2) on every file.

find . -type f -exec file '{}' \;

Runs `file' on every file in or below the current directory. Notice that the braces are enclosed in single quote marks to protect them from interpretation as shell script punctuation. The semicolon is similarly protected by the use of a backslash, though single quotes could have been used in that case also.

r2d2
()
Ответ на: комментарий от Garyk69

Не смог удержаться:

#!/bin/sh
ls $1 -p -l | awk '$2>2 && $8~/\/$/ {print $8}'

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