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

امین 15 سپتامبر 2023 زمان خواندن: 2 دقیقه

توجه: این مطلب قدیمی است و صرفا جهت آرشیو حفظ شده است. ممکن است امروزه برخی موارد یکسان نباشند.

روشهای متفاوتی برای جست و جوی فایل ها در لینوکس وجود داره. هم از راه خط فرمان هم از راه گرافیکی. دسکتاپ های پیشرفته تر مثل گنوم و 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

اولین نفری باشید که دیدگاهی ارسال می کند!




حاصل سر و کله زدن های من با لینوکس