>Скрипт не запустился, ругается на параметры грепа.
>Если не сложно, можно по шагам объяснить процедуру действа? :) Та-ак, в том, что скрипт не запустился, моя вина: не совсем точно команду составил.
По зрелом размышлении, она должна бы выглядеть так: find /dir -name "*.svl" | grep -v `lsof | grep "/dir" | sed 's/ */ /g' | awk '{print $NF}' | uniq` | xargs gzip
А сейчас приступим к разбору. И начнем его с последовательности команд, заключенных в
обратные кавычки:lsof | grep " /dir" | sed 's/ */ /g' | awk '{print $NF}' | uniq
Происходит тут следующее:
1. Команда lsof формирует список открытых файлов.
2. Команда grep "/dir" отбирает из этого списка строки, содержащие "/dir".
3. Команда sed 's/ */ /g' заменяет в отобранных строках последовательности из двух
и более пробелов на один.
4. Команда awk '{print $NF}' выводит на печать только последнее поле в полученых
строках (в нем как раз и содержится имя файла).
5. Команда uniq удаляет повторяющиеся строки (это на случай, если файл открыт более чем
одним процессом).
Итак, мы получили имя открытого файла. Оно передается в качестве аргумента команде
grep -v для того, чтобы исключить этот файл из вывода команды find /dir -name "*.svl".
И, наконец, имена остальных файлов через xargs передаются на вход команды gzip.
Уф-ф, вроде бы все. Какое, однако, монументальное объяснение получилось. :-)
P. S. Да, чуть не забыл: не могли бы вы сообщить, какой ОС пользуетесь и какие именно
сообщения об ошибках вам были выданы (просто скопируйте их и покажите здесь)?