جست و جوی فایل ها به روشی بسیار ساده در 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
#!/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
من خیلی وقت پیش از این اسکریپت شما استفاده کردم
اما از نظر نشون دادن نتیجه فرقی با catfish نداشت که برای من مناسب نبود
برای همین یه گشتی زدم و برنامه pcmanfm رو پسندیدم، این برنامه فایل منیجر پیشفرض لوبونتو هست و نتیجه جستجو رو مثل ناتیلوس نشون میده، فقط مشکلش اینه که در درایو ntfs فایل رو به trash نمیفرسته و مستقیم حذف میکنه (البته این قدر شعور داره که قبلش میگه نمیتونم با trash ارتباط برقرار کنم) (پیشنیازهایی هم داره که حجم چندانی ندارن)
برای من مهم بود که نتائج رو مثل وقتی که یه پوشه باز میکنم بهم نشون بده تا بتونم راحت حذف/تغییر نام /کپی/کات کنم