vasek |
|
Темы:
47
Сообщения:
11878
Участник с: 17 февраля 2013
|
Подшамалил, что делал на скорую руку, в итоге получился всего один скритп - преобразуем список не полными именами в полные. cat ~/test.sh Его работа (использовал файл list.txt - приведен выше) … понимает и пробелы в имениcat ~/list2.txt
PS - вместо `pwd` можно прописывать и $PWD или $(pwd) - но есть нюансы.
Ошибки не исчезают с опытом - они просто умнеют
|
vadik |
|
Темы:
57
Сообщения:
5496
Участник с: 17 августа 2009
|
Извиняюсь за долгое молчание, был вдали от инета.cucullusЕсть каталог, в нем лежит скрипт, который по определенному алгоритму находит имена файлов, которые надо удалить. Файлы могут лежать в произвольном количестве каталогов с разной глубиной вложенности и разными названиями, файлы могут дублироваться. Но все это барахло (набор других каталогов) всегда лежит в том же каталоге, что и мой скрипт. Т.е. скрипт никогда не ведет поиск только в собственном каталоге и во вложенных. По итогам работы скрипта создается список файлов, которые требуется удалять. Как я уже писал, файлы могут дублироваться, поэтому в список добавляются только имена файлов, без полных путей. В списке они сортируются и удаляются дубликаты имен. Добавлять файлы в список с полными путями нельзя по некоторым причинам, которые описывать долго, поэтому остановимся на том, что просто нельзя. Нужно добавить в скрипт код, который будет брать файл со списком, читать из него по очереди названия файлов, искать все файлы с указанными именами и удалять их автоматически. Я не знаток баша, скриптинга и т.д., поэтому не получается самому правильно составить конструкцию, которая бы выполняла мои требования. Примерно так. |
vadik |
|
Темы:
57
Сообщения:
5496
Участник с: 17 августа 2009
|
grayichПо некоторым причинам писать сразу не получится, файлы идут с относительными путями относительно своих каталогов. На этом и построена выборка. Если брать полные пути, то файлы будут разные и "отбраковываться" уже не будут. Нужно отбраковывать именно по названию. Этот вопрос я решил. Теперь не могу сам дойти, как именно файлы найти и удалить. vs220Попробовал, получил забавный эффект. Ощущение, что команды cat и xargs работают параллельно, потому что find в своем выводе пишет "/путь _к_катпуть/file_name.txt_где_ипуть/file_name.txtь" Т.е. имя файла вставляется прямо в путь, причем два раза и прямо в название каталога. Естественно далее ничего не ищется и не удаляется. |
vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
vadikЯ попробовал у себя запускать отработало нормально на списке типо где каждая строчка имя файлаСписок file_name.txt какой вид имеет? |
vadik |
|
Темы:
57
Сообщения:
5496
Участник с: 17 августа 2009
|
vs220Вы запускали из скрипта или из командной строки? Я из скрипта. В моем файле каждое имя с расширением записано в отдельной строчке. Без пробелов и спецсимволов. Только английские буквы и цифры. Типа jdsk105s5fdsgvbs.txt. . . . vasekПочти то, что нужно, но есть нюанс. Для удаления файлов я добавил строку Но после exit 0 скрипт заканчивает работу и дальнейшие операции не выполняются.Если перенести exit 0 после cat /tmp/del.tmp | xargs rm -rv, скрипт пытается удалять файлы два раза. Первый раз удаляет нормально, второй раз пытается удалить уже удаленные файлы и сыпет в консоль ошибки. Хотелось бы поправить. |
vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
vadikиз командной строки из скрипта вида тоже нормальнопроверьте без -delete должно вывести все пути к файлам |
vasek |
|
Темы:
47
Сообщения:
11878
Участник с: 17 февраля 2013
|
vadikТак не нужно ... лучше запустить удаление отдельно, проверив полученный файл ... так надежнее. Конечно, можно все в одном скрипте, но тогда лучше вместо создания файла с полными именами прописать удаление файлов .... На досуге посмотрю ... но лично для меня спокойнее удаление оставить одельно. Так и не понял - скрипт работает нормально? ... если что то менять, то нужно удостовериться, что все работает нормально.
Ошибки не исчезают с опытом - они просто умнеют
|
vadik |
|
Темы:
57
Сообщения:
5496
Участник с: 17 августа 2009
|
vs220, Честно - фиг его знает. Я специально создал один тестовый файл для удаления и find вывел точно такую же мешанину вместо пути. Уровень вложености - 7 каталогов. Абракадабра начинается с 5-го по счету каталога. Ради интереса попробую подвинуть. П.С. Уже и скрипт от vasek не работает. sh: 1: Syntax error: "(" unexpected Жесть какая-то. |
vadik |
|
Темы:
57
Сообщения:
5496
Участник с: 17 августа 2009
|
vasekУ меня есть отдельный скрипт, который выводит как надо для контроля. Там итак все "глазками". И все давно отлажено, сбоев не было, поэтому и появилась мысль автоматизировать удаление. Тем более - ничего критичного в удаляемых файлах нет. |
vs220 |
|
Темы:
25
Сообщения:
8524
Участник с: 16 августа 2009
|
vadikМожет символ переменная какие , попробуйте двойные кавычки для имени вместо одинарных для проверки можно без delete запустить должно вывести пути и по идеи будет видно на чем затык
|