вторник, 27 января 2009 г.

Создание списков файлов в консоли

Не раз мне приходилось сталкиваться с задачей сделать список файлов, расположенных в данной директории и её поддиректориях. Каждый раз я находил какое-то решение, но к следующему возникновению аналогичной задачи оно забывалось. В общем, сегодня я решил записать свою уловку — может быть, пригодится не мне одному.

Сначала я, если позволите, пущусь в небольшое рассуждение на тему «зачем это надо». Итак,

Зачем это надо?

Данная уловка пригодится в следующих случаях:
  • нужно сделать список всего аниме, которые есть у тебя на винчестере — например, чтобы переслать по джабберу друзьям, которые не знают, чего посмотреть, и просят у тебя какую-нибудь анимешку;
  • сделать «плейлист» манги, которую читаешь; для непосвящённых объясню — сканы манги обычно распространяются в виде изображений, сложенных в директории по главам, а главы, в свою очередь, группируются по томам. Как раз для такого применения уловка и придумана — такие «плейлисты» очень удобно скармливать feh'у, используя опцию -f
  • ещё тысяча и один случай, пока что не придуманы :D

Собственно сама уловка:

find -type f -print

Легко, правда? :) По вкусу можно добавить такие вот примочки:

find -type f -print | sort

отсортирует список по возрастанию (особенно полезно при создании «плейлиста» манги — feh -r ./* имеет обыкновение путать изображения).

И ещё одно дополнение, ради которого, собственно говоря, и писался данный пост:

curdir=$(pwd | sed 's/\//\\\//g') && find -type f -print | sort | sed "s/./$curdir/"

Соль конструкции в том, что вместо относительных путей в плейлисте будут абсолютные — т.е. его можно будет запустить из любой директории, а не только из той, в которой он был создан.

Напоследок маленький совет: если собираетесь использовать эту команду широко, то создайте скрипт следующего содержания:

#!/bin/bash
curdir=$(pwd | sed 's/\//\\\//g') && find -type f -print | sort | sed "s/./$curdir/"

сохраните его в /usr/bin под каким-нибудь понятным именем (mkfilelist, к примеру), установите бит исполняемости (mode +x mkfilelist) и используйте на здоровье. А лучше поступите так, как я советовал ранее, и не засоряйте системные каталоги.

Удачи!

Копируете статью — поставьте ссылку!

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.

 
Blogger logo Debian logo Creative Commons License FeedBurner Subscribers Counter