|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Sergey Gernichenko 2:5079/49.18 03 Dec 2003 21:02:58 To : Igor Chumak Subject : Re: Удалить все, кроме того, что есть в списке -------------------------------------------------------------------------------- В среду, 03 декабря 2003 года, в 15:32, Igor Chumak писал(а) мне: SG>> В директории есть кучка файлов. В ней же лежит файлик со списком SG>> нужных файлов, (точнее список я получаю в stdout с помощью awk). SG>> Остальные файлы нужно удалить. Как это оптимально сделать в SG>> bash-скрипте? IC> list=`cat -` IC> for f in "*" IC> do IC> echo "$list"|grep -v $f >/dev/null && rm $f IC> done Так не работает... Сработало вот так: for f in * do grep $f .listing >/dev/null || rm $f done Я, наверно, извращенец, но у меня вышло вот так (одной строкой): ls -1|awk '{system("awk '\'\$9~'/^" $0 "/ {f=1} END {if (f!=1) {system (\"rm " $0 "\");}}'\'' .listing")}' где в файле .listing в 9-й колонке хранятся имена нужных файлов. Только так и не удалось побороть кой-какой косяк, всвязи с чем вопрос по awk: в указанном .listing имя файла хранится в последней, 9-й колонке. Фильтр с помощью шаблона awk '$9 ~ /^filename$/ {print}' или awk '$9 == "filename" {print}' почему-то не срабатывают, хотя по другим колонкам срабатывают. В чём фишка? До свидания, *Igor* С уважением, *Sergey*. --- Linux from Scratch or OWL Linux, kernel 2.4.22 * Origin: Свой ум - хорошо, а с чужим хуже (2:5079/49.18) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/34353fcdfb34.html, оценка из 5, голосов 10
|