Видео ролики бесплатно онлайн

Смотреть гиг видео

Официальный сайт netfuncards 24/7/365

Смотреть видео бесплатно

Uzix 10.10.2010 13:30

СкриптыУдобный поиск и каталогизация файлов в консоли

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

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
# Author: Uzix <[email protected]>
# 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 работает по-другому


Тэги: баш скрипты
+ 6 -
Похожие Поделиться

Uzix 10.10.2010 13:32 #
+ 1 -
Скрипт с пылу с жару, "прямо из духовки" :) Так что исправления приветствуются.
ont 10.10.2010 17:01 #
+ 0 -
Вот здесь заложена типичная пехотная мина:
for find_file in `find . |grep -i $@`;...
Если будет файл test me.txt, то он обработается как test и me.txt.
Для этого лучше использовать параметр -exec у find. Еще может помочь опция -print0
Uzix 10.10.2010 17:45 #
+ 7 -
IFS=$'\n' делает разделителем вместо пробела перевод строки. http://welinux.ru/post/2408/
Скрипт проверен на именах вроде
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
ont 10.10.2010 19:48 #
+ 0 -
Век живи - век учись :)
goblinyara 10.10.2010 21:36 #
+ 0 -
блин, реквестую "Избранное" для комментариев...

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн