Блог    Теги    RSS    Файлопомойка Мой Github

Блог №200 по адресу 0708:07C7 / Удобный поиск и каталогизация файлов в консоли

10 октября 2010, 13:30
Все началось с того, что сегодня утром качалка FatRat сообщила о завершении многонедельной закачки торрента с рипом одного сайта с обоями. Распаковав полторы сотни архивов, удивлению моему предела не было - все 33 тысячи файлов были свалены в одну кучу. О том, чтобы нормально выбрать что-то из нее говорить не приходится. Но зато имена файлов были вполне нормальные, с тегами... так и родился этот простенький скрипт. Он рекурсивно ищет файлы, имя которых содержит заданную фразу и помещает симлинки на эти файлы в отдельную папочку.

#!/bin/bash
# Author: Uzix
# This script create links for all matched files

find_dir='finder.sh'
file_i=0

test -d "$find_dir" && rm -rf "$find_dir"
mkdir "$find_dir"
if [ ! -w "$find_dir" ]; then
echo "Can't open directory ./\"$find_dir\" for writing, trying to use home..."
find_dir="$HOME/finder.sh"
test -d "$find_dir" && rm -rf "$find_dir"
mkdir "$find_dir"
if [ ! -w "$find_dir" ]; then
echo "Can't open home directory for writing, exiting."
exit 1
fi
fi
echo FINDER DIRECTORY IS: "$find_dir"

IFS=$'\n'; for find_file in `find . |grep -i $@`; do
echo FILE: "$find_file"
find_link="$find_dir/$(basename $find_file)"
file_i=0
while test -r "$find_link"; do
((file_i+=1))
file_ext="$(echo $find_file |awk -F . '{print $NF}')"
find_link="$find_dir/$(echo $(basename $find_file $file_ext)\($file_i\).$file_ext)"
done
echo LINK: "$find_link"
ln -s "$(readlink -f $find_file)" "$find_link"
done

PS. Скрипт с башизмом - в POSIX Shell IFS работает по-другому
PPS. Скрипт проверен на именах вроде
Konachan.com - 27833 - horo spice_and_wolf sample_url=http---kuro.hanyuu.net-image-a7fd1e9d564c2a18f3359f4cbdcec57b-Konachan.com%20-%2027833%20horo%20spice_and_wolf.jpg parent_id= file_size=647053.jpg

Пост был написан для блога welinux.ru
Теги: #nix   #bash  

Комментарии RSS

Ваше имя:

E-mail (будет скрыт):

Текст: