Utilitas fsq
('file system query' - diucapkan, 'fisk') adalah alat untuk melakukan kueri ad-hoc terhadap sistem file menggunakan bahasa ekspresi mirip SQL. Ini berguna untuk menemukan file yang cocok dengan kriteria tertentu tanpa perlu menulis skrip satu kali pun untuk melakukannya.
Unduh biner untuk platform Anda dan tambahkan ke jalur baris perintah Anda.
fsq
mengambil satu argumen: ekspresi. Ungkapan ini terdiri dari bagian-bagian berikut:
<attribute list> [not] in <locations> where <conditions>
Untuk menemukan secara rekursif semua file di bawah direktori '/data' yang dimulai dengan karakter 'halo' dan lebih besar dari 5 mb, kueri berikut dapat digunakan:
fsq "name in '/data' where name startswith 'hello' and size > 5m"
Jika lokasi (dalam kasus di atas, '/data') dihilangkan, fsq
akan default ke direktori saat ini:
fsq "name where name startswith 'hello' and size > 5m"
Beberapa lokasi juga dapat ditentukan:
fsq "name in '/opt', '/media' where size > 5m"
Lokasi juga mungkin dikecualikan. Dalam contoh berikut, semua lokasi di bawah direktori saat ini kecuali .git
akan dicari file yang berisi string, "implements MyInterface":
fsq "path not in '.git' where content contains 'implements MyInterface'"
Daftar atribut menentukan atribut mana yang dicetak ke standar oleh fsq
. Dalam kasus di atas, ini hanyalah nama file ('nama'). Contoh berikut akan mencetak jalur ke file dan ukurannya (dalam byte):
fsq "path,size in '/opt' where size > 5m"
name
path
size
fsize
(dapat digunakan dalam daftar atribut, tetapi tidak dapat ditanyakan)content
(konten dapat ditanyakan, tetapi tidak dapat ditambahkan ke daftar atribut untuk dicetak)modified
(format: 'MM/DD/YYYY' atau 'MM/DD/YYYY jj:mm:ss')sha1
sha256
md5
stats
(dapat digunakan dalam daftar atribut, tetapi tidak dapat ditanyakan)<
<=
>
>=
=
!=
startswith
endswith
isdir
(operator ini tidak menerima argumen apa pun)isfile
(operator ini tidak menerima argumen apa pun)contains
ignorecase
(harus diikuti dengan '=', '!=', 'startswith', 'endswith', atau 'contains')matches
(pencocokan ekspresi reguler)Tanda kurung serta operator logika atau , dan , dan not dapat digunakan untuk mengelompokkan kondisi. Misalnya:
fsq "name in '.' where name startswith 'hello' or (isdir and not name startswith 'world')"
Kualifikasi ukuran berikut dapat ditambahkan ke nilai integer untuk menunjukkan unit non-default. Ini sangat berguna ketika menentukan ukuran file dalam ekspresi. Jika tidak ada penentu ukuran yang ditambahkan ke bilangan bulat, fsq
membandingkan nilai dalam byte.
Misalnya, untuk menemukan semua file yang berukuran lebih dari 10 kilobyte dan kurang dari 1 megabyte:
fsq "path where size > 10k and size < 1m"
Kompiler go
diperlukan untuk membangun fsq
. Jika Anda sudah menginstal make
, fsq
dapat diinstal dengan:
make install
Jika tidak, perintah berikut harus dijalankan saat berada di direktori fsq
:
go get golang.org/x/tools/cmd/goyacc
go install golang.org/x/tools/cmd/goyacc
goyacc parser.y
go install