Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Создать жесткие ссылки для файлов с заданными расширениями

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

Есть каталог /mnt/soft, в котором разные пользователи могут создавать каталоги и файлы.
Мне нужно, что бы при создании каталогов и файлов устанавливались ВСЕГДА такие права:
user - rwx
group - rwx
other - r--

Порылся в сторону ACL, но что-то не сильно помогло-(. Если не затруднит, подскажите как правильно сделать?
Ответ:
Сообщение от alterak
Приходится каждый раз подключаться к FS по SSH и добавлять прав.
Положи в крон скрипт и запускай каждые 10-30 минут:
Bash
1
chown -R www-data /mnt/soft/
Вопрос: Найти в текущем каталоге все файлы с первым расширением и переименовать их на второе расширение

Здраствуйте! Могли бы помочь с написанием скрипта, который:
• выводит имя текущего каталога
• приглашать первое расширение файла
• приглашать второе расширение файла
• находит в текущем каталоге все файлы с первым расширением и переименовывает их
так, что меняет их расширение на второе расширение
• если таких файлов не существует, выводит сообщение об ошибке и начинает с начала
Ответ: — практически то что надо
Вопрос: Надо создать символическую ссылку (в cygwin)

Привет!Надо создать символическую ссылку в cygwin.Как я представляю формат комманды такой:
Bash
1
>ln -s <куда попадем по ссылке> <откуда пойдем по ссылке>/<название ссылки>
Надо сделать ссылку для
Bash
1
python2.7.exe
.Делаю так:
Bash
1
>ln -s /usr/local/bin/python2.7.exe /home/papa/python27
Захожу в акаунт papa так:
Bash
1
cd ~papa
Вызываю:
Bash
1
python27
Пишет:Команда не опознана
Ответ: Да вот так работает:
Bash
1
./python27
Вопрос: Создать в каталоге ссылку на файл

Объясните, пожалуйста, как создать в каталоге /abc ссылку на файл 123.txt из домашнего каталога?
Ответ: Если каталога нет, то его нужно создать (нельзя что-то делать, в данном случае создавать ссылку, в том чего нет). Соответственно это будет отдельная команда mkdir
Вопрос: chmod на каталог

Всем привет.

Есть первый пользователь (не root) и он создал каталог и файлы в нем.
Можно ли второму пользователю (не root) дать полные права доступа на этот каталогу так, чтобы он в последствии автоматом имел доступ ко всем файлам в этом каталоге, создаваемые первым пользователем?
Ответ: Alexey Agafonov,

?
Вопрос: Работа команды "cp" для файлов с точками (скрытых)

Здрасьте всем!

Чайник, поэтому сильно не ругайтесь. )

Разбираю работу команд оболочки bash по работе с файлами и каталогами в Ubuntu 16.04.1.

Если использую команду удаления rm, то всё логично:

rm * - удаляет все файлы, кроме "файлов с точкой".
rm .* - удаляет все "файлы с точкой".

Аналогично с переносом mv и с удалением каталогов rmdir.

Но вот с копированием cp фигня какая-то.
Если копировать файлы, то всё работает аналогично, но вот если каталоги...

cp -r * dir - копирует все файлы и каталоги, кроме "файлов с точкой", НО! содержимое копируемых каталогов копируется полностью - и с точками и без точек.
Ну может так оно и логично.

А вот если засандалить точку со звёздочкой, то тут вообще ересь какая-то получается.
cp -r .* dir - во-1, в целевой каталог копируются все каталоги и файлы из текущего каталога (с точками и без), во-2, кроме файлов и каталогов из текущего каталога в целевой каталог копируются файлы и каталоги находящиеся в каталоге на один уровень выше текущего (родительском), НО не копируется родительский каталог текущего.


Так и должно быть?
Ответ: Всё станет намного понятнее если Вы поймете, что именно такое каталог в Линукс. Упрощенно это просто файл со списком «находящегося в нем» (которое на самом деле находится на диске и никаким образом не соотносится с каталогом). Поэтому копировать каталог без содержимого (не рекурсивно) нет смысла, вот система и напоминает, что в том, что Вы отдали на копирование («*») есть каталоги, но система их пропустила (потому как нет смысла), но обязана предупредить (потому как в команде присутствовали).
Почитайте ещё про «жесткие» и символические ссылки — это тоже поможет.
Вопрос: Создать bash для копирования дерева каталогов с файлом

Нужно создать bash-файл, который находил бы файлы, у которых первый и последний символы в названии числа (остальные - любые), и копировал бы его и всё дерево каталогов, в котором он находиться, в новую папку.

Пример: есть файл 1ggg1.txt, он находиться в дереве каталогов /1/2/3. Нужно копировать в папку 4 папки 1,2,3 и в них нужный файл.
Ответ:
Код Bash
1
find SOURCE -name '[0-9]*[0-9].txt' -exec cp -t 4 --parents {} +
Почему не в разделе?
Вопрос: Найти наибольший файл в заданном каталоге

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

решение :
в процессе решения столкнулся с проблемой поиска файла МАКСИМАЛЬНОГО размера. пробовал и циклом и как угодно но знаний в данной области не хватает. есть идеи? заранее спс

Добавлено через 20 минут
нашел следующее:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
FILES=$(ls)
MAXSIZE=-1
for file in $FILES; do
 SIZE=$(wc -c $file | sed -e 's/[[:space:]]/ /' | cut -d" " -f1)
 if [ $SIZE -gt $MAXSIZE ]; then
 MAXSIZE=$SIZE
 fi
done
echo "Max: $MAXSIZE"
FILENAMES=$(wc -c * | grep $MAXSIZE | sed -e 's/[[:space:]]/ /' | cut -d" " -f2)
for filename in $FILENAMES; do
 echo $filename
done
Добавлено через 23 минуты
12 строчка f3 надо так работает

Добавлено через 1 час 2 минуты
проблема на данный момент в поиске файла. не могу понять как передать значение переменной в поиск.
т е сделал переменную в которой содержится первый символ и надо выполнить примерно следующее
find . -type f -name $firstsym* -delete
но увы.
Ответ: Обычно при тестинге заменяют команду rm на echo. Или если это нарушает ход
работы программы заменяют на команду mv /to/my/tmp/trash созданную временно
директорию вроде мусорной корзины. Я же и заострила внимание на второй строчке
как раз из за этого момента.
Вопрос: Как выполнить команду cp в предварительно созданный каталог INDEX_TL

cp -r /home/smigielp/RDDH/extracts/INDEX_TL/* /sbcimp/dyn/data/GGL/cal/infiles/new/INDEX_TL/

Команда cp cработает если каталог INDEX_TL предварительно создан,
а можно ли переписать команду чтобы сначало создавался каталог INDEX_TL, а затем копировались все файлы из
/home/smigielp/RDDH/extracts/INDEX_TL/*
Ответ:
 команда1 && команда2
?
Ну или просто "man sh" до бездумных вопросов?