الأداة المساعدة fsq
("استعلام نظام الملفات" - تنطق "fisk") هي أداة لإجراء استعلامات مخصصة مقابل نظام ملفات باستخدام لغة تعبير تشبه SQL. يعد هذا مفيدًا للعثور على الملفات التي تطابق معايير معينة دون كتابة برنامج نصي لمرة واحدة للقيام بذلك.
قم بتنزيل الملف الثنائي لنظامك الأساسي وأضفه إلى مسار سطر الأوامر الخاص بك.
يأخذ fsq
وسيطة واحدة: التعبير. يتكون هذا التعبير من الأجزاء التالية:
<attribute list> [not] in <locations> where <conditions>
للعثور بشكل متكرر على كافة الملفات الموجودة ضمن الدليل '/data' والتي تبدأ بالحرف 'hello' والتي يزيد حجمها عن 5 ميغابايت، يمكن استخدام الاستعلام التالي:
fsq "name in '/data' where name startswith 'hello' and size > 5m"
إذا تم حذف الموقع (في الحالة المذكورة أعلاه، '/data')، فسيتم تعيين fsq
افتراضيًا إلى الدليل الحالي:
fsq "name where name startswith 'hello' and size > 5m"
يمكن تحديد مواقع متعددة أيضًا:
fsq "name in '/opt', '/media' where size > 5m"
قد يتم أيضًا استبعاد المواقع. في المثال التالي، سيتم البحث في جميع المواقع الموجودة ضمن الدليل الحالي باستثناء .git
عن الملفات التي تحتوي على السلسلة "implements MyInterface":
fsq "path not in '.git' where content contains 'implements MyInterface'"
تحدد قائمة السمات السمات التي سيتم طباعتها وفقًا للمعايير بواسطة fsq
. في الحالة المذكورة أعلاه، هذا هو مجرد اسم الملف ("الاسم"). سيطبع المثال التالي كلاً من المسار إلى الملف والحجم (بالبايت):
fsq "path,size in '/opt' where size > 5m"
name
path
size
fsize
(يمكن استخدامه في قائمة السمات، ولكن لا يمكن الاستعلام عنه)content
(يمكن الاستعلام عن المحتوى، لكن لا يمكن إضافته إلى قائمة السمات للطباعة)modified
(التنسيق: 'MM/DD/YYYY' أو 'MM/DD/YYYY hh:mm:ss')sha1
sha256
md5
stats
(يمكن استخدامها في قائمة السمات، ولكن لا يمكن الاستعلام عنها)<
<=
>
>=
=
!=
startswith
endswith
isdir
(هذا العامل لا يأخذ أي وسيطات)isfile
(هذا العامل لا يأخذ أي وسيطات)contains
ignorecase
(يجب أن يتبعها '=' أو '!=' أو 'يبدأ بـ' أو 'ينتهي بـ' أو 'يحتوي على')matches
(مطابقة التعبير العادي)يمكن استخدام الأقواس وكذلك العوامل المنطقية أو و و و لا لتجميع الشروط. على سبيل المثال:
fsq "name in '.' where name startswith 'hello' or (isdir and not name startswith 'world')"
يمكن إلحاق مؤهلات الحجم التالية بقيم عددية للإشارة إلى الوحدات غير الافتراضية. تعتبر هذه مفيدة بشكل خاص عند تحديد أحجام الملفات في التعبيرات. إذا لم يتم إلحاق أي مؤهل للحجم بعدد صحيح، فسيقوم fsq
بمقارنة القيمة بالبايت.
على سبيل المثال، للعثور على كافة الملفات التي يزيد حجمها عن 10 كيلو بايت وأقل من 1 ميغا بايت:
fsq "path where size > 10k and size < 1m"
المترجم go
مطلوب لبناء fsq
. إذا قمت بتثبيت make
، فيمكن تثبيت fsq
باستخدام:
make install
بخلاف ذلك، سيلزم تشغيل الأوامر التالية أثناء وجودك في دليل fsq
:
go get golang.org/x/tools/cmd/goyacc
go install golang.org/x/tools/cmd/goyacc
goyacc parser.y
go install