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

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

Пример 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.)

Оглавление книги


Генерация: 1.519. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз