Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Вывести структуру каталога (включая подкаталоги) по заданному пути (bash)

На вход пакетному файлу приходит абсолютный или относительный путь к папке (как параметр пакетного файлы). Если такой папки нет, то писать "Данной папки нет" и завершить выполнение программы.Если такая папка есть, то вывести структуру каталога (включая подкаталоги). Символ "-" означает вложенный каталог.
хотелось бы получить на выходе такую штучку.
dir
-dir1
--dir1.1
--dir1.2
-dir2
--dir2.1
спасибо большое заранее
Ответ:
Сообщение от krisetta
данный скрипт отказывается работать?
А подробнее можно? Ошибки, неправильный результат ... ?
Сообщение от krisetta
[ -d *" $1 " ]
Зачем пробелы вокруг $1?
Сообщение от krisetta
Понятно, что никак)
Почему же? Просто символ придется экранировать:
Bash
1
sed 's/[^/]*\//-/g'
Вопрос: Найти в текущем каталоге файл с заданным именем

Помогите пожалуйста написать скрипт очень прошу!

Разработать программу, отыскивающую в текущем каталоге файл с заданным именем. Имя искомого файла вводится в командной строке. Если файл существует, вывести подробную информацию о нём на экран. Если файл не существует, то он создается и в него записывается текущее время.
Ответ:
Bash
1
2
3
4
5
#!/usr/bin/env bash
#filename shur.sh
read -p "Введите имя файла: " var 
find ./ -maxdepth 1 -type f -name "$var" -exec stat {} \;
[[ -f "$var" ]] || echo -n $(date +%F_%X) > "$var"
Вопрос: Вывести для каталога список файлов, для которых разрешены выполнение и чтение

Помогите, пожалуйста, написать код на Линукс в обычном текстовом документе на языку С
Задачка: Вывести для каталога (имя каталога вводится с клавиатуры) список файлов, для которых разрешены выполнения и чтения.
Ответ:
Код Bash
1
2
3
4
5
read -p "Введите наименование директории для поиска >>>  " dir
if [[ -d "$dir" ]]
then
      find "$dir" -type f -executable -readable -print
fi
Вопрос: Очистить содержимое вложенных директорий сохранив структуру каталогов

Как можно очистить содержимое вложенных директорий сохранив при этому структуру каталогов?
Ответ: Это тоже коррекная команда, но то что предложили в #4 красивее и корректнее.
Вопрос: Вывести на экран все подкаталоги в домашнем каталоге

создать скрипт, который выдает следующее сообщение: (использовать различные цвета). "В домашнем каталоге <n> подкаталогов <подкаталоги>"
Ответ: Ну так раскрашивайте
Bash
1
2
3
ls -d ~/*/ | tee >(wc -l | 
sed 's/.*/'$'\033''[34mВ домашнем '$'\033''[33mкаталоге '$'\033''[32m& подкаталогов:'$'\033''[m/' >&2) |
{ sleep 0.1; cat ; }
Это '$'\033'' — символ ESC, его можно в терминале ввести комбинацией Ctrl+v Esc, отображается как ^[(один символ, не 2!!!)
Вопрос: Скрипт поиска файлов по заданному критерию

Как написать скрипт, осуществляющий поиск файлов по заданному пользователем критерию (имя файла, тип файла, размер файла, дата и время последней модификации, заданная подстрока) в указанном каталоге, включая подкаталоги.
Ответ: Вот почитай, там как раз по твоей теме
Вопрос: Занести в файл список файлов из домашнего каталога

Не могу закончить одно задание . Как можно в файл занести список всех файлов из домашнего каталога, включая подкаталоги и скрытые файлы, а также подробный вывод свойств файлов
Ответ:
Код
команда > имя файла
Вопрос: Вывести числа в цикле с заданным приращением

Что я хочу получить:
Bash
1
2
3
4
5
6
for($i = 0; $i < 2000; $i += 5){
  
  nohup /opt/lampp/bin/php /opt/lampp/htdocs/parse/option.php $i ($i+5) > /opt/lampp/htdocs/main/log_option/options/log_$i_($i+5) 2>&1 &
 
 
}
Что у меня есть:

Bash
1
2
3
4
5
6
7
8
9
10
11
count=0
 
while [ $count -lt 2000 ]
 
    do
 
    nohup /opt/lampp/bin/php /opt/lampp/htdocs/parse/option.php $i ($i+5) > /opt/lampp/htdocs/main/log_option/options/log_$i_($i+5) 2>&1 &
 
    (( count+=5 ))
 
done
естественно оно не работает, как правильно сделать?
Ответ: Можно так
Bash
1
for ((i=0; i < 2000; i+=5)) ; do
но стандартно
Bash
1
for i in $(seq 0 5 1999)
Вопрос: Рекурсивная функция для подсчета файлов в данном каталоге

Такое дело, нужно написать программу для подсчета файла в данном каталоге и если в этом каталоге есть подкаталоги , то в них тоже считать отдельно. Код написал, но чет ошибка выскакивает... Подскажите что не так. Заранее спасибо
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
findContent() {
 count=0;
 for file in $1/*
 do
 if [ -d "$file" ]
 then
 echo $file
 findContent "$file"
 else
 count=$(($count+1))
 fi
 done
 if [ $count -ne 0 ]
 then 
 echo $count
 fi
 count=0;
 }
 dir=~/N
 findContent $dir
Ответ: Если выводить по каждой директории, то больше подходит вариант топикстартера (ну доработанный конечно)
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
file_cnt() { 
local count=0
local dir="${1:-"."}"
for item in "$dir"/*
do
    if [ -f "$item" ]
    then
        count=$(($count + 1))
    elif [ -d "$item" ]
    then
        file_cnt "$item"
    fi
done
echo "${dir}: $count"
}
Да, и если пробелы в именах
Код Bash
1
for dir in `find "$START" -type d`
будет выдавать ошибку. В таких случаях лучше использовать конструкцию
Код Bash
1
while IFS="" read -r dir ; do ... done < <(for dir in find "$START" -type d)
Добавлено через 12 минут
Но если хотите find можно обойтись без циклов
Код Bash
1
find -type d -printf '%p : ' -exec bash -c 'find {}/* -prune -type f | wc -l' \;
Вопрос: Задача на нахождение каталогов

Есть такая задача: Создать командный файл, который по команде read запрашивает имя каталога и выдает его полное содержимое.
Мой алгоритм решения этой задачи такой:
1) находим все одноименные каталоги
2) записываем пути к этим папкам как массив строк
3) поочередно просматриваем их содержимое
Пока что написал вот это:
Bash
1
2
3
4
5
6
#!/bin/bash
echo "Задайте имя каталога : "
read catalog
echo
find / -name $catalog -type d
exit 0
Результат такой

Теперь не знаю, как превратить, то, что выдано на экран, в массив из строк, чтобы потом с помощью команды ls -a посмотреть содержание каждой строки (папки).
Буду признателен любой конструктивной подсказке.
Ответ:
Bash
1
-exec ls {} \;