Чтение онлайн

на главную - закладки

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

bash$ find ~/ -name '*.txt'

/home/bozo/.kde/share/apps/karm/karmdata.txt

/home/bozo/misc/irmeyc.txt

/home/bozo/test-scripts/1.txt

find /home/bozo/projects -mtime 1

# Найти все файлы в каталоге /home/bozo/projects и вложенных подкаталогах,

#+ которые изменялись

в течение последних суток.

#

# mtime = время последнего изменения файла

# ctime = время последнего изменения атрибутов файла (через 'chmod' или как-то иначе)

# atime = время последнего обращения к файлу

DIR=/home/bozo/junk_files

find "$DIR" -type f -atime +5 -exec rm {} \;

# Удалить все файлы в каталоге "/home/bozo/junk_files"

#+ к которым не было обращений в течение последних 5 дней.

#

# "-type filetype", где

# f = обычный файл

# d = каталог, и т.п.

# (Полный список ключей вы найдете в 'man find'.)

find /etc -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \;

# Поиск всех IP-адресов (xxx.xxx.xxx.xxx) в файлах каталога /etc.

# Однако эта команда выводит не только IP-адреса, как этого избежать?

# Примерно так:

find /etc -type f -exec cat '{}' \; | tr -c '.[:digit:]' '\n' \

| grep '^[^.][^.]*\.[^.][^.]*\.[^.][^.]*\.[^.][^.]*$'

# [:digit:] -- один из символьных классов

# введен в стандарт POSIX 1003.2.

# Спасибо S.C.

Не следует путать опцию – exec команды find с внутренней командой Bash -- exec.

Пример 12-2. Badname, удаление файлов в текущем каталоге, имена которых содержат недопустимые символы и пробелы.

#!/bin/bash

# Удаление файлов в текущем каталоге, чьи имена содержат недопустимые символы.

for filename in *

do

badname=`echo "$filename" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$]/p`

#

Недопустимые символы в именах файлов: + { ; " \ = ? ~ < > & * | $

rm $badname 2>/dev/null # Сообщения об ошибках "выстреливаются" в никуда.

done

# Теперь "позаботимся" о файлах, чьи имена содержат пробельные символы.

find .
– name "* *" -exec rm -f {} \;

# На место "{}", find подставит полное имя файла.

# Символ '\' указывает на то, что ';' интерпретируется как обычный символ, а не как конец команды.

exit 0

#---------------------------------------------------------------------

# Строки, приведенные ниже, не будут выполнены, т.к. выше стоит команда "exit".

# Альтернативный вариант сценария:

find .
– name '*[+{;"\\=?~<>&*|$ ]*' -exec rm -f '{}' \;

exit 0

# (Спасибо S.C.)

Пример 12-3. Удаление файла по его номеру inode

#!/bin/bash

# idelete.sh: Удаление файла по номеру inode.

# Этот прием используется в тех случаях, когда имя файла начинается с недопустимого символа,

#+ например, ? или -.

ARGCOUNT=1 # Имя файла должно быть передано в сценарий.

E_WRONGARGS=70

E_FILE_NOT_EXIST=71

E_CHANGED_MIND=72

if [ $# -ne "$ARGCOUNT" ]

then

echo "Порядок использования: `basename $0` filename"

exit $E_WRONGARGS

fi

if [ !
– e "$1" ]

then

echo "Файл \""$1"\" не найден."

exit $E_FILE_NOT_EXIST

fi

inum=`ls -i | grep "$1" | awk '{print $1}'`

# inum = номер inode (index node) файла

Поделиться:
Популярные книги

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Мастер темных Арканов

Карелин Сергей Витальевич
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов

Измена. Испорченная свадьба

Данич Дина
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Измена. Испорченная свадьба

Блуждающие огни

Панченко Андрей Алексеевич
1. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Блуждающие огни

Пышка и Герцог

Ордина Ирина
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Пышка и Герцог

Затерянные земли или Великий Поход

Михайлов Дем Алексеевич
8. Господство клана Неспящих
Фантастика:
фэнтези
рпг
7.89
рейтинг книги
Затерянные земли или Великий Поход

Адвокат Империи 2

Карелин Сергей Витальевич
2. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 2

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Невеста снежного демона

Ардова Алиса
Зимний бал в академии
Фантастика:
фэнтези
6.80
рейтинг книги
Невеста снежного демона

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Пипец Котенку! 2

Майерс Александр
2. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пипец Котенку! 2