SQLのようなクエリを備えたファイルを見つけます
従来のfindとlsを完全に置き換える傾向はありませんが、 FSELECTにはこれらの素晴らしい機能があります。
.gitignore 、 .hgignore 、および.dockerignoreサポート(実験的)さらに進行中です!
cargo install fselectを実行します@asm0deyに感謝します
@4Censordに感謝します
@filalex77のおかげで、 nixpkgsでfselect
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"
スペースのあるディレクトリ名内で検索します(バックテックもサポートされています):
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'"
シンプルなグローブは自動的に拡張し、 = and != operatorsで動作します。
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'
可能な日付と時刻の間隔(5月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'
オプションでSymlinksをフォローしてください。
fselect path, size from /home/user symlinks where name = '*.jpg'
アーカイブ内で検索します(現在、zip-archivesのみがサポートされています):
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
昔ながらのラップmp3ファイルを見つける:
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
Xattrを使用してファイルを見つけたり、特定の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
JetBrains Idea Open Sourceライセンスによってサポートされています