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

Иcпользуя команду grep:

1) Получить список файлов из директории /etc, начинающиеся на t и заканчивающихся на d.
2) Получить список файлов из директории /etc, начинающиеся на t и содержащих в названии буквы h или e.
Ответ: EQUATRUM, где это так учат, что для выполнения стандартной файловой операции используют grep?
Bash
1
echo /etc/t*d
Вопрос: Вывести суммарный размер в байтах файлов каталога

Написать командный сценарий для интерпретатора bash, который
выводил бы суммарный размер в байтах файлов каталога,
указанного в качестве параметра к сценарию.
Написать командный сценарий для интерпретатора bash, который
на основании файла /etc/passwd выводил бы список, содержащий
имена пользователей и их домашние каталоги, а также число
пользователей, домашние каталоги которых находятся в каталоге
/home.
Ответ: Дкмаю поезд ушел а для интересующихся:
Bash
1
2
3
4
5
6
#!/usr/bin/env bash
if [ $1 ]; then
    find "$1" -maxdepth 1 -type f -printf "%s\n" | awk '{i+=$0} END {print i}'
else
    echo "usage: <prugramm> <directory>"
fi
и
Bash
1
2
3
#!/usr/bin/env bash
awk -F: '/home/{i+=1} $3>=1000 {print a+=1,$1,$6} END {print "число \
пользователей с домашней директорией в /home = ",i}' /etc/passwd
Добавлено через 12 минут
)) <prugramm> <programm> или позиционный параметр "$0"
Вопрос: Отобразить список, состоящий из первых букв имен файлов каталога

Делаю вот так:
Код Bash
1
2
zhenya@zhenya-Ideapad-Z570:/usr/include$ echo `find *.*`| cut -c 1
a
Не могу понять почему результат - первая буква первого файла.Помогите найти ошибку
Ответ: Достаточно
Код Bash
1
ls|cut -c1
На худой конец
Код Bash
1
ls *|cut -c1
Cra3y,
Но
Код Bash
1
ls *.*
даст вам только имена, имеющие точку внутри, тут вам не DOS/Windows :-)
Вопрос: Не передавать Rsync’ом уже переданные файлы

Здравствуйте,

Имеется скрипт(Rsync), который передает(синхронизирует) определенные файлы из клиента (Windows/Cygwin) на сервера (Unix). Скрипт каждые 2 минуты срабатывает(через Планировщик заданий). В папке на клиенте не всегда есть файлы т.е. иногда есть файлы, а иногда нет. Если файлы передаются они автоматом заносятся в exclude файл в скрипте и при появлении новых файлов старые уже не передаются.
Сейчас для удостоверения переданности файлов(чтобы заносить их в exclude) использую результат выполнения Rsync, но он мне возвращает всегда код 0 (успешно) даже, когда файлы не передаются и поэтому они ошибочно заносятся в exclude.
Как мне узнать были ли переданы файлы на клиент или нет, чтобы правильно заносить их в exclude?
Ниже выложу скрипт, который сейчас использую.

Кликните здесь для просмотра всего текста

Bash
1
2
3
4
rsync -avz -e ssh --exclude-from=/cygdrive/c/cygwin/home/ivanov/exclude.txt --log-file=/cygdrive/c/cygwin/home/ivanov/rsync.log /cygdrive/c/OUT/{txt*} 
user@192.168.X.X:/incoming
 
ls /cygdrive/c/OUT/ >> /cygdrive/c/cygwin/home/ivanov/exclude.txt


Добавлено через 7 минут
По скрипту:
/cygdrive/c/OUT/ -- папка на клиенте
192.168.X.X:/incoming -- папка на сервере
exclude.txt -- файл exclude, в который записываются переданные файлы.
Ответ: Вообщем нашел решение.

rsync -rtv <source> <dest> | wc -l
Если у команды результат больше 4, то значит файлы были переданы, иначе нет.
Исходя из этого переделал свой скрипт в такой вид:

Bash
1
2
3
4
5
6
newfiles="$(rsync -rtavz --exclude-from=/cygdrive/c/cygwin/home/ivanov/exclude.txt -e ssh user@192.168.X.X:/home/user/test/folder/file* /cygdrive/c/cygwin/home/ivanov/test | wc -l)"
if [[ $newfiles -gt 4 ]]; then
ls /cygdrive/c/cygwin/home/ivanov/test >> /cygdrive/c/cygwin/home/ivanov/exclude.txt
echo "success"
fi
exit
Вопрос: rsync - файлы для исключения

Всем привет

У меня настроен rsync потомками, которая работает замечательно. Синхронизирует сайты dev с test. Я выполняю такую команду

sudo rsync -av /var/www/dev-html/* /var/www/test-html/

И все файлы из папки /var/www/dev-html/ копируются в папку /var/www/test-html того же сервера. Кроме (!) .htaccess и настроечного файла.
У меня вопрос - где может находится файл или настройки, которые не синхронизируют определенный список файлов?
Я искал их в /etc/rsyslog.conf, искал во всех файлах каталога etc/rsyslog.d - их там нет. Где же они могут находиться? Гугл по этому поводу мне ничего не сказал.

Заранее благодарен.
Ответ: а чтобы синхронизировать и скрытые только find'ом?
Вопрос: Поиск и переименование файлов по заданным параметрам

1)Определить количество файлов или подкаталогов в корневом каталоге, к которым все имеют полные права доступа.
2)Написать скрипт, который добавляет к именам файлов каталога, заданного в первом параметре, расширения, заданные во втором параметре.
 Комментарий модератора Marinero
Один вопрос — одна тема
Ответ:
Bash
1
2
3
4
5
6
7
8
9
10
touch {a..f}
chmod 777 {a..f}
./script.name . test
ls -l {a..f}.test
-rwxrwxrwx 1 az az 0 Дек 12 18:16 a.test*
-rwxrwxrwx 1 az az 0 Дек 12 18:16 b.test*
-rwxrwxrwx 1 az az 0 Дек 12 18:16 c.test*
-rwxrwxrwx 1 az az 0 Дек 12 18:16 d.test*
-rwxrwxrwx 1 az az 0 Дек 12 18:16 e.test*
-rwxrwxrwx 1 az az 0 Дек 12 18:16 f.test*
Вопрос: Вывести список файлов, не имеющих расширения

здравствуйте,
надо вывести список файлов каталог /boot ,не имеющих расширения,с указанием номера узла и отсортировать в обратном порядке.
я ввел команда :
Код
ls -ir /boot [!*.*]
почему то на экране все равно выводит файлы которые имеют расширения .И странно в том ,что он еще и вывел список файла в домашнем каталоге.
Подскажите,пжлс, как исправить и в чем ошибку?
Ответ: Если Вы не используете расширенные паттерны то получить результат с использованием только ls не получится. Я бы решал вопрос при помощи find
Bash
1
find /boot ! -name '*.*' -print0 | xargs -0 ls -i | sort -r
Вопрос: Вывести список файлов начинающихся с символа 'q' с заходом в подкаталоги с сортировкой

здравствуйте
подскажите пожалуйста ка вывести список файлов каталога,начинающихся с символа 'q'.с заходом в подкаталоги.Список отсортировать по размеру файлов в порядке возрастания.
Подскажите,пжлс, как написать командой с помощью find.
И тут лучше команда find или ls использовать?
Ответ: Я этого не говорил
Сообщение от Marinero
find -name 'q*' -print0 | xargs -0 ls -1rS
Вопрос: Выбрать названия тех файлов, которые содержат ключевое слово

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

Добавлено через 45 минут
я вроде бы сделала, скажите, если можно было сделать как-то еще
Bash
1
2
3
touch flist.txt #создание 
$ find ~ -name "test*" -printf >flist.txt
cat flist #просмотр содержимого
Ответ:
Сообщение от Kukstyler
использую ls т.к. частенько он быстрее
Не быстрее, просто Вас неправильно научили.
Сообщение от Marinero
это выполняется средствами самого шелла
Вопрос: Определить тип файлов передаваемых как аргументы с контролем их количества

Доброго времени суток!
Мне требуется помощь в написании скрипта,который может принимать несколько параметров (от 1 до 8) и для каждого из них определять тип файла (каталог,символическая ссылка, исполняемый, обычный, прочий, не существует) Если параметры при запуске отсутствуют, скрипт должен сообщить о необходимости наличия параметров и закончить работу. Если же параметров больше 8, сообщить о слишком большой количестве параметров и закончить работу. Для отладки использовать echo.

Буду очень счастлива если поможете!
Ответ: Количество параметров — системная переменная $#
Закончить работу — команда exit
Oпределить тип — команда file
Перебрать аргументы — цикл for arg ; do … ; done