find

package module
v0.0.0-...-2e304c9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2023 License: MIT Imports: 8 Imported by: 1

README

go-find

Documentation Build Status Report Card

go-find is a programmatically accessible golang implementation of the *nix find command.

TL:DR; This thing can help you find files on disk matching a wide variety of criteria.

The goal of this project is to achieve equivalent or better capabilities relative to the GNU find command-line utility.

Get it

# Install the library:
go get -u github.com/jaytaylor/go-find

# Get the `go-find' CLI:
go install github.com/jaytaylor/go-find/go-find/...

Example Usage

As a standalone command-line program
go-find . -name 'favorite-quotes.txt'
From within Go
package main

import (
	"fmt"
	"strings"

	"github.com/jaytaylor/go-find"
)

func main() {
	finder := find.NewFind(".").MinDepth(1).Name("favorite-quotes.txt")
	hits, _ := finder.Evaluate()
	fmt.Printf("%+v\n", strings.Join(hits, "\n"))
}

The predicate feature matrix

"Predicate tests" are find's terminology for what can be intuitively be thought of as filter operations.

Even though most of the predicate tests aren't yet implemented, mostly because many of them are quite obscure, the initial set covers all of my "everyday" common use-cases.

Comparison of go-find vs GNU find:

Feature GNU find has it? go-find has it?
operators
-amin
-anewer
-atime
-cmin
-cnewer
-context
-ctime
-empty
-executable
-false
-fls
-fprint
-fprint0
-fprintf
-fstype
-gid
-group
-ilname
-iname
-inum
-ipath
-iregex
-iwholename
-links
-lname
-ls
-maxdepth
-mindepth
-mmin
-mount
-mtime
-name
-newer
-newerXY
-nogroup
-not
-nouser
-ok
-okdir
-path
-perm
-print
-print0
-printf
-prune
-quit
-readable
-regex
-regextype
-samefile
-size
-true
-type
-uid
-used
-user
-wholename
-writable
-xdev
-xtype

Note: Features involving command execution are an anti-goal and are omitted from the matrix. If you spot an error in this list, please open an issue or PR.

Documentation

Index

Constants

View Source
const (
	// man statfs
	ADFS_SUPER_MAGIC      = 0xadf5
	AFFS_SUPER_MAGIC      = 0xADFF
	AUTOFS_SUPER_MAGIC    = 0x0187
	BDEVFS_MAGIC          = 0x62646576
	BEFS_SUPER_MAGIC      = 0x42465331
	BFS_MAGIC             = 0x1BADFACE
	BINFMTFS_MAGIC        = 0x42494e4d
	BPF_FS_MAGIC          = 0xcafe4a11
	BTRFS_SUPER_MAGIC     = 0x9123683E
	CGROUP_SUPER_MAGIC    = 0x27e0eb
	CGROUP2_SUPER_MAGIC   = 0x63677270
	CIFS_MAGIC_NUMBER     = 0xFF534D42
	CODA_SUPER_MAGIC      = 0x73757245
	COH_SUPER_MAGIC       = 0x012FF7B7
	CONFIGFS_MAGIC        = 0x62656570
	CRAMFS_MAGIC          = 0x28cd3d45
	DEBUGFS_MAGIC         = 0x64626720
	DEVFS_SUPER_MAGIC     = 0x1373
	DEVPTS_SUPER_MAGIC    = 0x1cd1
	EFIVARFS_MAGIC        = 0xde5e81e4
	EFS_SUPER_MAGIC       = 0x00414A53
	EXT_SUPER_MAGIC       = 0x137D
	EXT2_OLD_SUPER_MAGIC  = 0xEF51
	EXT2_SUPER_MAGIC      = 0xEF53
	EXT3_SUPER_MAGIC      = 0xEF53
	EXT4_SUPER_MAGIC      = 0xEF53
	FUSE_SUPER_MAGIC      = 0x65735546
	FUTEXFS_SUPER_MAGIC   = 0xBAD1DEA
	HFS_SUPER_MAGIC       = 0x4244
	HFSPLUS_SUPER_MAGIC   = 0x482b
	HOSTFS_SUPER_MAGIC    = 0x00c0ffee
	HPFS_SUPER_MAGIC      = 0xF995E849
	HUGETLBFS_MAGIC       = 0x958458f6
	ISOFS_SUPER_MAGIC     = 0x9660
	JFFS2_SUPER_MAGIC     = 0x72b6
	JFS_SUPER_MAGIC       = 0x3153464a
	MINIX_SUPER_MAGIC     = 0x137F /* orig. minix */
	MINIX_SUPER_MAGIC2    = 0x138F /* 30 char minix */
	MINIX2_SUPER_MAGIC    = 0x2468 /* minix V2 */
	MINIX2_SUPER_MAGIC2   = 0x2478 /* minix V2, 30 char names */
	MINIX3_SUPER_MAGIC    = 0x4d5a /* minix V3 fs, 60 char names */
	MQUEUE_MAGIC          = 0x19800202
	MSDOS_SUPER_MAGIC     = 0x4d44
	NCP_SUPER_MAGIC       = 0x564c
	NFS_SUPER_MAGIC       = 0x6969
	NILFS_SUPER_MAGIC     = 0x3434
	NTFS_SB_MAGIC         = 0x5346544e
	OCFS2_SUPER_MAGIC     = 0x7461636f
	OPENPROM_SUPER_MAGIC  = 0x9fa1
	PIPEFS_MAGIC          = 0x50495045
	PROC_SUPER_MAGIC      = 0x9fa0
	PSTOREFS_MAGIC        = 0x6165676C
	QNX4_SUPER_MAGIC      = 0x002f
	QNX6_SUPER_MAGIC      = 0x68191122
	RAMFS_MAGIC           = 0x858458f6
	REISERFS_SUPER_MAGIC  = 0x52654973
	ROMFS_MAGIC           = 0x7275
	SELINUX_MAGIC         = 0xf97cff8c
	SMACK_MAGIC           = 0x43415d53
	SMB_SUPER_MAGIC       = 0x517B
	SMB2_MAGIC_NUMBER     = 0xfe534d42
	SOCKFS_MAGIC          = 0x534F434B
	SQUASHFS_MAGIC        = 0x73717368
	SYSFS_MAGIC           = 0x62656572
	SYSV2_SUPER_MAGIC     = 0x012FF7B6
	SYSV4_SUPER_MAGIC     = 0x012FF7B5
	TMPFS_MAGIC           = 0x01021994
	TRACEFS_MAGIC         = 0x74726163
	UDF_SUPER_MAGIC       = 0x15013346
	UFS_MAGIC             = 0x00011954
	USBDEVICE_SUPER_MAGIC = 0x9fa2
	V9FS_MAGIC            = 0x01021997
	VXFS_SUPER_MAGIC      = 0xa501FCF5
	XENFS_SUPER_MAGIC     = 0xabba1974
	XENIX_SUPER_MAGIC     = 0x012FF7B4
	XFS_SUPER_MAGIC       = 0x58465342

	AFS_SUPER_MAGIC             = 0x5346414F
	AUFS_SUPER_MAGIC            = 0x61756673
	ANON_INODE_FS_SUPER_MAGIC   = 0x09041934
	CEPH_SUPER_MAGIC            = 0x00C36400
	ECRYPTFS_SUPER_MAGIC        = 0xF15F
	FAT_SUPER_MAGIC             = 0x4006
	FHGFS_SUPER_MAGIC           = 0x19830326
	FUSEBLK_SUPER_MAGIC         = 0x65735546
	FUSECTL_SUPER_MAGIC         = 0x65735543
	GFS_SUPER_MAGIC             = 0x1161970
	GPFS_SUPER_MAGIC            = 0x47504653
	MTD_INODE_FS_SUPER_MAGIC    = 0x11307854
	INOTIFYFS_SUPER_MAGIC       = 0x2BAD1DEA
	ISOFS_R_WIN_SUPER_MAGIC     = 0x4004
	ISOFS_WIN_SUPER_MAGIC       = 0x4000
	JFFS_SUPER_MAGIC            = 0x07C0
	KAFS_SUPER_MAGIC            = 0x6B414653
	LUSTRE_SUPER_MAGIC          = 0x0BD00BD0
	NFSD_SUPER_MAGIC            = 0x6E667364
	PANFS_SUPER_MAGIC           = 0xAAD7AAEA
	RPC_PIPEFS_SUPER_MAGIC      = 0x67596969
	SECURITYFS_SUPER_MAGIC      = 0x73636673
	UFS_BYTESWAPPED_SUPER_MAGIC = 0x54190100
	VMHGFS_SUPER_MAGIC          = 0xBACBACBC
	VZFS_SUPER_MAGIC            = 0x565A4653
	ZFS_SUPER_MAGIC             = 0x2FC12FC1
)

Variables

View Source
var (
	ErrorEmptyPredStat    = errors.New("emptyPredicate: lstat")
	ErrorEmptyPredOpen    = errors.New("emptyPredicate: opening")
	ErrorEmptyPredListing = errors.New("emptyPredicate: listing")
)
View Source
var ErrorFSType error = errors.New("filesystem type")
View Source
var FsTypeMap = map[int64]string{
	ADFS_SUPER_MAGIC:            "adfs",
	AFFS_SUPER_MAGIC:            "affs",
	AFS_SUPER_MAGIC:             "afs",
	ANON_INODE_FS_SUPER_MAGIC:   "anon-inode FS",
	AUFS_SUPER_MAGIC:            "aufs",
	AUTOFS_SUPER_MAGIC:          "autofs",
	BEFS_SUPER_MAGIC:            "befs",
	BDEVFS_MAGIC:                "bdevfs",
	BFS_MAGIC:                   "bfs",
	BINFMTFS_MAGIC:              "binfmt_misc",
	BTRFS_SUPER_MAGIC:           "btrfs",
	CEPH_SUPER_MAGIC:            "ceph",
	CGROUP_SUPER_MAGIC:          "cgroupfs",
	CIFS_MAGIC_NUMBER:           "cifs",
	CODA_SUPER_MAGIC:            "coda",
	COH_SUPER_MAGIC:             "coh",
	CRAMFS_MAGIC:                "cramfs",
	DEBUGFS_MAGIC:               "debugfs",
	DEVFS_SUPER_MAGIC:           "devfs",
	DEVPTS_SUPER_MAGIC:          "devpts",
	ECRYPTFS_SUPER_MAGIC:        "ecryptfs",
	EFS_SUPER_MAGIC:             "efs",
	EXT_SUPER_MAGIC:             "ext",
	EXT2_SUPER_MAGIC:            "ext2/ext3",
	EXT2_OLD_SUPER_MAGIC:        "ext2",
	FAT_SUPER_MAGIC:             "fat",
	FHGFS_SUPER_MAGIC:           "fhgfs",
	FUSEBLK_SUPER_MAGIC:         "fuseblk",
	FUSECTL_SUPER_MAGIC:         "fusectl",
	FUTEXFS_SUPER_MAGIC:         "futexfs",
	GFS_SUPER_MAGIC:             "gfs/gfs2",
	GPFS_SUPER_MAGIC:            "gpfs",
	HFS_SUPER_MAGIC:             "hfs",
	HFSPLUS_SUPER_MAGIC:         "hfsplus",
	HPFS_SUPER_MAGIC:            "hpfs",
	HUGETLBFS_MAGIC:             "hugetlbfs",
	MTD_INODE_FS_SUPER_MAGIC:    "inodefs",
	INOTIFYFS_SUPER_MAGIC:       "inotifyfs",
	ISOFS_SUPER_MAGIC:           "isofs",
	ISOFS_R_WIN_SUPER_MAGIC:     "isofs",
	ISOFS_WIN_SUPER_MAGIC:       "isofs",
	JFFS_SUPER_MAGIC:            "jffs",
	JFFS2_SUPER_MAGIC:           "jffs2",
	JFS_SUPER_MAGIC:             "jfs",
	KAFS_SUPER_MAGIC:            "k-afs",
	LUSTRE_SUPER_MAGIC:          "lustre",
	MINIX_SUPER_MAGIC:           "minix",
	MINIX_SUPER_MAGIC2:          "minix (30 char.)",
	MINIX2_SUPER_MAGIC:          "minix v2",
	MINIX2_SUPER_MAGIC2:         "minix v2 (30 char.)",
	MINIX3_SUPER_MAGIC:          "minix3",
	MQUEUE_MAGIC:                "mqueue",
	MSDOS_SUPER_MAGIC:           "msdos",
	NCP_SUPER_MAGIC:             "novell",
	NFS_SUPER_MAGIC:             "nfs",
	NFSD_SUPER_MAGIC:            "nfsd",
	NILFS_SUPER_MAGIC:           "nilfs",
	NTFS_SB_MAGIC:               "ntfs",
	OPENPROM_SUPER_MAGIC:        "openprom",
	OCFS2_SUPER_MAGIC:           "ocfs2",
	PANFS_SUPER_MAGIC:           "panfs",
	PIPEFS_MAGIC:                "pipefs",
	PROC_SUPER_MAGIC:            "proc",
	PSTOREFS_MAGIC:              "pstorefs",
	QNX4_SUPER_MAGIC:            "qnx4",
	QNX6_SUPER_MAGIC:            "qnx6",
	RAMFS_MAGIC:                 "ramfs",
	REISERFS_SUPER_MAGIC:        "reiserfs",
	ROMFS_MAGIC:                 "romfs",
	RPC_PIPEFS_SUPER_MAGIC:      "rpc_pipefs",
	SECURITYFS_SUPER_MAGIC:      "securityfs",
	SELINUX_MAGIC:               "selinux",
	SMB_SUPER_MAGIC:             "smb",
	SMB2_MAGIC_NUMBER:           "smb2",
	SOCKFS_MAGIC:                "sockfs",
	SQUASHFS_MAGIC:              "squashfs",
	SYSFS_MAGIC:                 "sysfs",
	SYSV2_SUPER_MAGIC:           "sysv2",
	SYSV4_SUPER_MAGIC:           "sysv4",
	TMPFS_MAGIC:                 "tmpfs",
	UDF_SUPER_MAGIC:             "udf",
	UFS_MAGIC:                   "ufs",
	UFS_BYTESWAPPED_SUPER_MAGIC: "ufs",
	USBDEVICE_SUPER_MAGIC:       "usbdevfs",
	V9FS_MAGIC:                  "v9fs",
	VMHGFS_SUPER_MAGIC:          "vmhgfs",
	VXFS_SUPER_MAGIC:            "vxfs",
	VZFS_SUPER_MAGIC:            "vzfs",
	XENFS_SUPER_MAGIC:           "xenfs",
	XENIX_SUPER_MAGIC:           "xenix",
	XFS_SUPER_MAGIC:             "xfs",

	ZFS_SUPER_MAGIC: "zfs",
	// contains filtered or unexported fields
}

coreutils/src/stat.c

Functions

This section is empty.

Types

type Find

type Find struct {
	Paths []string
	// contains filtered or unexported fields
}

func NewFind

func NewFind(paths ...string) *Find

func (*Find) Empty

func (finder *Find) Empty() *Find

func (*Find) Evaluate

func (finder *Find) Evaluate() ([]string, error)

func (*Find) MaxDepth

func (finder *Find) MaxDepth(n int) *Find

func (*Find) MinDepth

func (finder *Find) MinDepth(n int) *Find

func (*Find) Mount

func (finder *Find) Mount() *Find

func (*Find) Name

func (finder *Find) Name(pattern string) *Find

func (*Find) Regex

func (finder *Find) Regex(expr *regexp.Regexp) *Find

func (*Find) Type

func (finder *Find) Type(t string) *Find

func (*Find) WholeName

func (finder *Find) WholeName(pattern string) *Find

type PredicateError

type PredicateError struct {
	// contains filtered or unexported fields
}

func (PredicateError) Error

func (p PredicateError) Error() string

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL