لینوکس و من

جست و جوی فایل ها به روشی بسیار ساده در Thunar

روشهای متفاوتی برای جست و جوی فایل ها در لینوکس وجود داره. هم از راه خط فرمان هم از راه گرافیکی. دسکتاپ های پیشرفته تر مثل گنوم و kde خب روش خاص خودشون رو دارن. اما باید در دسکتاپ های ساده تر مثل xfce خودمون دست به کار بشیم. در فروم ها از چیزی به نام catfish برای xfce نام بردند. اما این برنامه از gtk3 استفاده میکنه و با xfce سازگاری مناسبی نداره.
ما دنبال روش ساده تر و بی دردسر تری هستیم. تلفیق حالت گرافیکی با خط فرمان، که یک جست و جوی سریع و آنی برای ما میاره و نیاز به نصب چیز خاصی نیست. البته zenity باید نصب باشه که در اکثر توزیع ها به طور پیشفرض نصبه. اگه نبود نصب کنید.

متن اسکریپت رو در ادامه ی مطلب گذاشتم. به ادامه ی مطلب برید، اسکریپت رو در یک فایل با نام دلخواه و در یک پوشه دلخواه کپی کنید. و بهش مجوز اجرایی بدید.

آنگاه در  Thunar یک custom action ایجاد کنید و این مقادیر رو براش قرار بدید

Name: Search for files
Command: bash ~/Programs/searchforfiles.sh %f
File pattern: *
Appears if selection contains: Directories
 
حالا وقتی روی یک فولدر یا داخلش رایت کلیک کنید عبارت search for files رو میبینید. خودتون نتیجه ی کار رو ببینید که چقدر سریع و تمیز این کار رو انجام میده.
#!/bin/bash
#search-for-files

# change this figure to suit yourself - I find zenity dies from about 1000 results but YMMV
maxresults=500

# again, change the path to the icon to suit yourself. But who doesn't like tango?
window_icon="/usr/share/icons/Faenza/actions/scalable/search.svg"

# this script will work for any environment that has bash and zenity, so the filemanager is entirely down to you! you can add extra arguments to the string as long as the last argument is the path of the folder you open
filemanager="thunar"

window_title="Search for Files"

srcPath="$*"

if ! [ -d "$srcPath" ] ; then
cd ~/
srcPath=`zenity --file-selection --directory --title="$window_title - Look in folder" --window-icon="$window_icon"`
fi

if [ -d "$srcPath" ] ; then

fragment=`zenity --entry --title="$window_title - Name contains:" --window-icon="$window_icon" --text="Search strings less than 2 characters are ignored"`
if ! [ ${#fragment} -lt 2 ] ; then

(

echo 10
O=$IFS IFS=$'\n' files=( `find "$srcPath" -iname "*$fragment*" -printf \"%Y\"\ \"%f\"\ \"%k\ KB\"\ \"%t\"\ \"%h\"\\\n | head -n $maxresults` ) IFS=$O
echo 100

selected=`eval zenity --list --title=\"${#files[@]} Files Found - $window_title\" --window-icon="$window_icon" --width="600" --height="400" --text=\"Search results:\" --print-column=5 --column \"Type\" --column \"Name\" --column \"Size\" --column \"Date modified\" --column \"Path\" ${files[@]}`
if [ -e "$selected" ] ; then "$filemanager" "$selected" ; fi

) | zenity --progress --auto-close --pulsate --title="Searching..." --window-icon="$window_icon" --text="Searching for \"$fragment\""

fi

fi

exit
دسته:

ترفند

کلیدواژه:

thunar

xfce

نظرات  (۲)

سلام
من خیلی وقت پیش از این اسکریپت شما استفاده کردم

اما از نظر نشون دادن نتیجه فرقی با catfish نداشت که برای من مناسب نبود

برای همین یه گشتی زدم و برنامه pcmanfm رو پسندیدم، این برنامه فایل منیجر پیش‌فرض لوبونتو هست و نتیجه جستجو رو مثل ناتیلوس نشون می‌ده، فقط مشکلش اینه که در درایو ntfs فایل رو به trash نمی‌فرسته و مستقیم حذف می‌کنه (البته این قدر شعور داره که قبلش می‌گه نمی‌تونم با trash ارتباط برقرار کنم) (پیش‌نیازهایی هم داره که حجم چندانی ندارن)

برای من مهم بود که نتائج رو مثل وقتی که یه پوشه باز می‌کنم بهم نشون بده تا بتونم راحت حذف/تغییر نام /کپی/کات کنم
خیلی عالی بود دمت.