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

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

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

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

Данная уловка пригодится в следующих случаях:

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

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) и используйте на здоровье. А лучше поступите так, как я советовал ранее, и не засоряйте системные каталоги.

Удачи!

Drop me a line! (wonder where’s the comments form?)