mirror of
https://github.com/sharkdp/fd
synced 2024-10-06 07:49:18 +00:00
Add same file system functionality
This adds a `--same-file-system` CLI option that instructs the walker to not cross file system boundaries. Due to the fact that the corresponding option of the `ignore` crate's `WalkBuilder` does not support platforms other than Unix and Windows, the option does nothing on platforms other than those. Resolves #507
This commit is contained in:
parent
0f27485faf
commit
8796de57b5
27
README.md
27
README.md
|
@ -285,19 +285,20 @@ USAGE:
|
|||
fd [FLAGS/OPTIONS] [<pattern>] [<path>...]
|
||||
|
||||
FLAGS:
|
||||
-H, --hidden Search hidden files and directories
|
||||
-I, --no-ignore Do not respect .(git|fd)ignore files
|
||||
--no-ignore-vcs Do not respect .gitignore files
|
||||
-s, --case-sensitive Case-sensitive search (default: smart case)
|
||||
-i, --ignore-case Case-insensitive search (default: smart case)
|
||||
-g, --glob Glob-based search (default: regular expression)
|
||||
-F, --fixed-strings Treat the pattern as a literal string
|
||||
-a, --absolute-path Show absolute instead of relative paths
|
||||
-L, --follow Follow symbolic links
|
||||
-p, --full-path Search full path (default: file-/dirname only)
|
||||
-0, --print0 Separate results by the null character
|
||||
-h, --help Prints help information
|
||||
-V, --version Prints version information
|
||||
-H, --hidden Search hidden files and directories
|
||||
-I, --no-ignore Do not respect .(git|fd)ignore files
|
||||
--no-ignore-vcs Do not respect .gitignore files
|
||||
-s, --case-sensitive Case-sensitive search (default: smart case)
|
||||
-i, --ignore-case Case-insensitive search (default: smart case)
|
||||
-g, --glob Glob-based search (default: regular expression)
|
||||
-F, --fixed-strings Treat the pattern as a literal string
|
||||
-a, --absolute-path Show absolute instead of relative paths
|
||||
-L, --follow Follow symbolic links
|
||||
--same-file-system Don't cross file system boundaries (only Unix/Windows)
|
||||
-p, --full-path Search full path (default: file-/dirname only)
|
||||
-0, --print0 Separate results by the null character
|
||||
-h, --help Prints help information
|
||||
-V, --version Prints version information
|
||||
|
||||
OPTIONS:
|
||||
-d, --max-depth <depth> Set maximum search depth (default: none)
|
||||
|
|
|
@ -115,6 +115,7 @@ pub fn build_app() -> App<'static, 'static> {
|
|||
.alias("dereference")
|
||||
.overrides_with("follow"),
|
||||
)
|
||||
.arg(arg("same-file-system").long("same-file-system"))
|
||||
.arg(
|
||||
arg("full-path")
|
||||
.long("full-path")
|
||||
|
@ -329,6 +330,11 @@ fn usage() -> HashMap<&'static str, Help> {
|
|||
, "Follow symbolic links"
|
||||
, "By default, fd does not descend into symlinked directories. Using this flag, symbolic \
|
||||
links are also traversed.");
|
||||
doc!(h, "same-file-system"
|
||||
, "Don't cross file system boundaries (only Unix/Windows)"
|
||||
, "By default, fd will traverse the file system tree as far as other options dictate. \
|
||||
With this flag, fd ensures that it does not descend into a different file system than \
|
||||
the one it started in. Does nothing if not on Unix or Windows.");
|
||||
doc!(h, "full-path"
|
||||
, "Search full path (default: file-/dirname only)"
|
||||
, "By default, the search pattern is only matched against the filename (or directory \
|
||||
|
|
|
@ -28,6 +28,9 @@ pub struct FdOptions {
|
|||
/// Whether to follow symlinks or not.
|
||||
pub follow_links: bool,
|
||||
|
||||
/// Whether to limit the search to starting file system or not.
|
||||
pub same_file_system: bool,
|
||||
|
||||
/// Whether elements of output should be separated by a null character
|
||||
pub null_separator: bool,
|
||||
|
||||
|
|
|
@ -208,6 +208,7 @@ fn main() {
|
|||
|| matches.is_present("rg-alias-hidden-ignore")
|
||||
|| matches.is_present("no-ignore-vcs")),
|
||||
follow_links: matches.is_present("follow"),
|
||||
same_file_system: matches.is_present("same-file-system"),
|
||||
null_separator: matches.is_present("null_separator"),
|
||||
max_depth: matches
|
||||
.value_of("depth")
|
||||
|
|
|
@ -78,6 +78,8 @@ pub fn scan(path_vec: &[PathBuf], pattern: Arc<Regex>, config: Arc<FdOptions>) -
|
|||
.git_exclude(config.read_vcsignore)
|
||||
.overrides(overrides)
|
||||
.follow_links(config.follow_links)
|
||||
// Same file system is only supported on Unix and Windows platforms
|
||||
.same_file_system(config.same_file_system && (cfg!(unix) || cfg!(windows)))
|
||||
.max_depth(config.max_depth);
|
||||
|
||||
if config.read_fdignore {
|
||||
|
|
Loading…
Reference in a new issue