ابحث عن ملفات مع استفسارات تشبه SQL
على الرغم من أنه لا يميل إلى استبدال find التقليدي تمامًا و ls ، إلا أن FSELECT لديها هذه الميزات الرائعة:
.gitignore .dockerignore .hgignoreالمزيد جاري!
cargo install fselect حزمة AUR ، بفضل @ASM0DEY
حزمة Aur Bin ، بفضل @4censord
fselect في nixpkgs ، بفضل @filalex77
بناء ثابت مع Musl.
يتوفر الثنائي المسبق بشكل ثابت في تنزيلات Github.
winget install -e --id fselect.fselect choco install fselect scoop install fselect brew install fselect sudo port selfupdate
sudo port install fselect
fselect [ARGS] COLUMN[, COLUMN...] [from ROOT[, ROOT...]] [where EXPR] [group by COLUMNS] [order by COLUMNS] [limit N] [into FORMAT]
fselect -i
وصف أكثر تفصيلا. انظر إلى الأمثلة أولاً.
ابحث عن ملفات مؤقتة أو تكوين (مسار وحجم كامل):
fselect size, path from /home/user where name = '*.cfg' or name = '*.tmp'
قد يحذف مستخدمو Windows الاقتباسات:
fselect size, path from C:Usersuser where name = *.cfg or name = *.tmp
أو ضع جميع الحجج في اقتباسات مثل هذا:
fselect "name from /home/user/tmp where size > 0"
ابحث ضمن اسم دليل مع مسافات (يتم دعم backticks أيضًا):
fselect "name from '/home/user/dir with spaces' where size > 0"
fselect "name from `/home/user/dir with spaces` where size > 0"
أو ببساطة الهروب من الاقتباسات المفردة:
fselect name from '/home/user/dir with spaces' where size gt 0
حدد حجم الملف ، واحصل على المسار المطلق ، وأضفه إلى النتائج:
cd /home/user
fselect size, abspath from ./tmp where size gt 2g
fselect fsize, abspath from ./tmp where size = 5m
fselect hsize, abspath from ./tmp where size lt 8k
fselect name, size from ./tmp where size between 5mb and 6mb
استعلام أكثر تعقيدًا:
fselect "name from /tmp where (name = *.tmp and size = 0) or (name = *.cfg and size > 1000000)"
وظائف إجمالية (يمكنك استخدام الأقواس المجعد إذا كنت تريد ، وحتى الجمع بينها مع الأقواس العادية):
fselect "MIN(size), MAX{size}, AVG(size), SUM{size}, COUNT(*) from /home/user/Downloads"
وظائف التنسيق:
fselect "LOWER(name), UPPER(name), LENGTH(name), YEAR(modified) from /home/user/Downloads"
احصل على عام أقدم ملف:
fselect "MIN(YEAR(modified)) from /home/user"
استخدم عروض أسعار واحدة إذا كنت بحاجة إلى معالجة الملفات مع المسافات:
fselect "path from '/home/user/Misc stuff' where name != 'Some file'"
يتم دعم تعبيرات منتظمة لنكهة الصدأ:
fselect name from /home/user where path =~ '.*Rust.*'
نفي التعبيرات العادية:
fselect "name from . where path !=~ '^./config'"
تتوسع الكرات البسيطة تلقائيًا وتعمل مع = و != المشغلين:
fselect name from /home/user where path = '*Rust*'
كلاسيكي مثل:
fselect "path from /home/user where name like '%report-2018-__-__???'"
مشغلات المطابقة الدقيقة للبحث مع regexps تعطيل:
fselect "path from /home/user where name === 'some_*_weird_*_name'"
ابحث عن الملفات حسب التاريخ:
fselect path from /home/user where created = 2017-05-01
fselect path from /home/user where modified = today
fselect path from /home/user where accessed = yesterday
fselect "path from /home/user where modified = 'apr 1'"
fselect "path from /home/user where modified = 'last fri'"
كن أكثر تحديداً لتطابق جميع الملفات التي تم إنشاؤها على الفاصل الزمني بين الساعة 3 مساءً و 4 مساءً:
fselect path from /home/user where created = '2017-05-01 15'
وأكثر تحديدا:
fselect path from /home/user where created = '2017-05-01 15:10'
fselect path from /home/user where created = '2017-05-01 15:10:30'
الفواصل الزمنية التاريخ والوقت ممكن (ابحث عن كل شيء محدث منذ 1 مايو):
fselect path from /home/user where modified gte 2017-05-01
الافتراضي هو الدليل الحالي:
fselect path, size where name = '*.jpg'
البحث في مواقع متعددة:
fselect path from /home/user/oldstuff, /home/user/newstuff where name = '*.jpg'
مع الحد الأدنى و/أو الحد الأقصى للعمق المحدد ( depth هو مرادف لعمق maxdepth ):
fselect path from /home/user/oldstuff depth 5 where name = '*.jpg'
fselect path from /home/user/oldstuff mindepth 2 maxdepth 5, /home/user/newstuff depth 10 where name = '*.jpg'
اتبع اختياريا اختياريا:
fselect path, size from /home/user symlinks where name = '*.jpg'
البحث داخل الأرشيفات (حاليًا يتم دعم عمليات الرمز البريدي فقط):
fselect path, size from /home/user archives where name = '*.jpg'
أو مجتمعة:
fselect size, path from /home/user depth 5 archives symlinks where name = '*.jpg' limit 100
تمكين .gitignore أو .hgignore دعم:
fselect size, path from /home/user/projects gitignore where name = '*.cpp'
fselect size, path from /home/user/projects git where name = '*.cpp'
fselect size, path from /home/user/projects hgignore where name = '*.py'
ابحث عن طريق أبعاد الصورة:
fselect CONCAT(width, 'x', height), path from /home/user/photos where width gte 2000 or height gte 2000
ابحث عن صور مربعة:
fselect path from /home/user/Photos where width = height
ابحث عن الصور مع جزء اسم معروف ولكن تمديد غير معروف:
fselect path from /home/user/projects where name = "*RDS*" and width gte 1
ابحث عن ملفات الراب في المدرسة القديمة:
fselect duration, path from /home/user/music where genre = Rap and bitrate = 320 and mp3_year lt 2000
اختصارات لملحقات الملفات الشائعة:
fselect path from /home/user where is_archive = true
fselect path, mime from /home/user where is_audio = 1
fselect path, mime from /home/user where is_book != false
حتى طريقة أبسط لاستخدام الأعمدة المنطقية:
fselect path from /home/user where is_doc
fselect path from /home/user where is_image
fselect path from /home/user where is_video
ابحث عن الملفات ذات الأذونات الخطرة:
fselect mode, path from /home/user where other_write or other_exec
fselect mode, path from /home/user where other_all
التعبيرات البسيطة التي تشبه العالم أو حتى التعبيرات العادية في وضع الملف ممكن:
fselect mode, path from /home/user where mode = '*rwx'
fselect mode, path from /home/user where mode =~ '.*rwx$'
ابحث عن الملفات بواسطة UID أو GID للمالك:
fselect uid, gid, path from /home/user where uid != 1000 or gid != 1000
أو باسم المالك أو المجموعة:
fselect user, group, path from /home/user where user = mike or group = mike
ابحث عن ملفات خاصة:
fselect name from /usr/bin where suid
fselect path from /tmp where is_pipe
fselect path from /tmp where is_socket
ابحث عن الملفات التي تحتوي على XATTRS ، تحقق مما إذا كان XATTR موجودًا ، أو احصل على قيمته:
fselect "path, has_xattrs, has_xattr(user.test), xattr(user.test) from /home/user"
قم بتضمين النص التعسفي كأعمدة:
fselect "name, ' has size of ', size, ' bytes'"
نتائج المجموعة:
fselect "ext, count(*) from /tmp group by ext"
نتائج الطلب:
fselect path from /tmp order by size desc, name
fselect modified, fsize, path from ~ order by 1 desc, 3
أخيرا الحد من النتائج:
fselect name from /home/user/samples limit 5
إخراج التنسيق:
fselect size, path from /home/user limit 5 into json
fselect size, path from /home/user limit 5 into csv
fselect size, path from /home/user limit 5 into html
MIT/Apache-2.0
بدعم من رخصة المصدر المفتوح Idea Idea Idea