Thayne McCombs
115ae93df9
Refactor file types check to be on impl of FileTypes
...
Relates to #382
2021-08-10 20:30:23 +02:00
himself65
4e04d13215
Fix return out of match pattern
2021-08-09 13:36:09 +02:00
William Correia
f8ae334ca9
Add --no-ignore-parent flag
...
- Flag toggles parent checking in the `ignore` crate. This should
affect both git and non-git ignore files.
- Updated Changelog.
2021-08-08 17:38:24 -04:00
David Peter
a7a4499d1d
Fix unneeded references
2021-07-27 09:05:23 +02:00
David Peter
2a2126c40a
Fix clippy warnings
2021-07-27 09:05:23 +02:00
sharkdp
b2fa188029
Avoid panic when sending errors after receiver shutdown
...
fixes #678
2020-10-28 13:10:25 +01:00
Matthias Reitinger
ec4cc981fc
Add --prune flag
...
closes #535
2020-10-25 08:16:01 +01:00
Amrit Rathie
fd1ddc9d08
Change dependency dirs to dirs-next
2020-10-24 15:25:07 +02:00
sharkdp
3283a7b345
Fix warning
2020-05-19 14:01:00 +02:00
Bobbie Soedirgo
79d5a5bdc5
Add global fdignore support
2020-05-18 21:19:09 +02:00
Alexandru Macovei
d7cc34e36f
[ownership] depend on users 0.10.0 on unix; parse user and group names
2020-05-18 21:11:33 +02:00
sharkdp
cb56add1d8
Add new --type socket
and --type pipe
filters
...
closes #511
2020-04-16 09:59:45 +02:00
sharkdp
d63c63be8c
Add --min-depth and --exact-depth
...
Add new `--min-depth <depth>` and `--exact-depth <depth>` options in addition to the existing
option to limit the maximum depth.
closes #404
2020-04-15 17:02:41 +02:00
sharkdp
4815ee416e
Remove process::exit instance
2020-04-03 22:36:32 +02:00
sharkdp
4590ae8535
Proper error handling within walk.rs
2020-04-03 22:36:32 +02:00
sharkdp
b415d7234b
Rename fshelper to filesystem
2020-04-03 22:36:32 +02:00
sharkdp
e0cba4b700
Remove 'internal' module
2020-04-03 22:36:32 +02:00
sharkdp
c79d1638f5
Move MAX_BUFFER_LENGTH
2020-04-03 22:36:32 +02:00
sharkdp
65096a653e
Move FdOptions to Options
2020-04-03 22:36:32 +02:00
sharkdp
e42ddda5a6
Clean up exit code handling
2020-04-03 10:48:27 +02:00
sharkdp
4274075f6f
Remove outdated license headers (not strictly required by Apache-2.0)
2020-04-03 10:19:13 +02:00
sharkdp
b9d0e72f70
Solve clippy issues
2020-04-03 10:08:47 +02:00
sharkdp
d43827fe57
Add --max-results=<count> option
...
This new option can be used instead of piping to `head -n <count>` for
improved performance:
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|:---|---:|---:|---:|---:|
| `fd --max-buffer-time=0 flow.yaml` | 153.9 ± 2.5 | 151.3 | 170.3 | 4.21 ± 5.86 |
| `fd --max-buffer-time=0 flow.yaml \| head -n 1` | 145.3 ± 17.4 | 111.0 | 180.2 | 3.98 ± 5.55 |
| `fd --max-results=1 flow.yaml` | 36.5 ± 50.8 | 7.2 | 145.7 | 1.00 |
Note: there is a large standard deviation on the last result due to the
non-deterministic file system traversal. With `--max-results`, we don't
have to traverse the whole filesystem tree, so it's all about luck.
closes #472
closes #476
2020-04-02 20:27:41 +02:00
sharkdp
44605d55dd
Use .to_string() instead of .description()
2020-03-22 15:54:43 +01:00
sharkdp
d05e7171d4
Fix for older versions of Rust
2020-02-28 20:42:14 +01:00
sharkdp
81dee25438
Add additional check for symlink
2020-02-28 20:42:14 +01:00
sharkdp
bbf0f1cc1f
New implementation of broken-symlink handling
2020-02-28 20:42:14 +01:00
sharkdp
bfc8c42444
Revert back to master state
2020-02-28 20:42:14 +01:00
sharkdp
d6034119ae
Add comment for broken symlinks
2020-02-28 20:42:14 +01:00
sharkdp
82e6562cfc
Further simplify the code
2020-02-28 20:42:14 +01:00
sharkdp
8cea65c1b8
Simplify match statement
2020-02-28 20:42:14 +01:00
Tom Milligan
9d73402ef2
walk: catch ignore NotFound error in the case of a broken symlink
2020-02-28 20:42:14 +01:00
fusillicode
0f2429cabc
Add unit tests for merge_exitcodes
2020-02-22 12:32:35 +01:00
fusillicode
232e3937f2
Rename error_if_any_error to merge_exitcodes
2020-02-22 12:32:35 +01:00
fusillicode
e23398e6d0
Extract error_if_any_error as free function
2020-02-22 12:32:35 +01:00
fusillicode
7213f5a88e
Add collection of job & thread exit codes + default to ExitCode::Error if any ExitCode::Error
2020-02-22 12:32:35 +01:00
sharkdp
f7d1938556
Formatting
2020-01-01 12:05:50 +01:00
Simon Engmann
dea1fbe722
Restrict --one-file-system
to supported systems
...
Instead of having the option do nothing at runtime on unsupported
platforms, it is now only available on the systems that support it in
the first place.
2020-01-01 11:54:01 +01:00
Simon Engmann
94993ca6c2
Rename --same-file-system
to --one-file-system
2020-01-01 11:54:01 +01:00
Simon Engmann
8796de57b5
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
2020-01-01 11:54:01 +01:00
sharkdp
0f27485faf
Quit immediately if the channel::send call failed
2020-01-01 11:21:52 +01:00
sharkdp
d48aeda6b2
Apply clippy suggestions
2019-09-23 20:23:11 +02:00
sharkdp
08fcd7ce59
Make --changed-within/before work for directories
...
closes #470
2019-09-15 17:03:23 +02:00
sharkdp
641594c2c6
Use regex::bytes::* instead of regex::*
2019-09-15 16:47:38 +02:00
sharkdp
2545aaabd2
Exit immediately when Ctrl-C has been pressed twice
2019-09-15 13:06:03 +02:00
sharkdp
a0505bd4df
Expose exit status from --exec-batch <cmd>
...
closes #333
2019-09-13 23:05:35 +02:00
Tavian Barnes
5cbd8405ec
Check the pattern before anything else, since it doesn't require metadata
...
This should partially address #432 by decreasing the number of stat() calls:
$ strace -c -f ./fd-before '\.h$' /usr -j1 -S +1k >/dev/null
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
15.71 8.831948 7 1192279 46059 stat
$ strace -c -f ./fd-after '\.h$' /usr -j1 -S +1k >/dev/null
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
7.92 1.972474 10 183907 46046 stat
Though it's not as few as possible:
$ strace -c -f find /usr -iname '*.h' -size +1k >/dev/null
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
19.01 0.946500 5 161649 newfstatat
$ strace -c -f bfs /usr -iname '*.h' -size +1k >/dev/null
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
13.73 0.406565 5 69005 statx
Performance is much better when metadata is required:
$ hyperfine ./fd-{before,after}" '\.h$' /usr -j1 -S +1k"
Benchmark #1 : ./fd-before '\.h$' /usr -j1 -S +1k
Time (mean ± σ): 4.623 s ± 0.154 s [User: 1.465 s, System: 3.354 s]
Range (min … max): 4.327 s … 4.815 s 10 runs
Benchmark #2 : ./fd-after '\.h$' /usr -j1 -S +1k
Time (mean ± σ): 2.650 s ± 0.058 s [User: 1.258 s, System: 1.592 s]
Range (min … max): 2.568 s … 2.723 s 10 runs
Summary
'./fd-after '\.h$' /usr -j1 -S +1k' ran
1.74 ± 0.07 times faster than './fd-before '\.h$' /usr -j1 -S +1k'
While remaining the same when it's not:
$ hyperfine ./fd-{before,after}" '\.h$' /usr -j1"
Benchmark #1 : ./fd-before '\.h$' /usr -j1
Time (mean ± σ): 2.382 s ± 0.038 s [User: 1.221 s, System: 1.286 s]
Range (min … max): 2.325 s … 2.433 s 10 runs
Benchmark #2 : ./fd-after '\.h$' /usr -j1
Time (mean ± σ): 2.362 s ± 0.034 s [User: 1.193 s, System: 1.294 s]
Range (min … max): 2.307 s … 2.422 s 10 runs
Summary
'./fd-after '\.h$' /usr -j1' ran
1.01 ± 0.02 times faster than './fd-before '\.h$' /usr -j1'
2019-05-08 07:28:47 -05:00
Alexandru Macovei
c2b46f247f
avoid cloning command, in the wake of 9d26b74
2019-01-30 20:42:43 +01:00
Alexandru Macovei
fe53af064b
fix most clippy lints
2019-01-26 16:15:48 +01:00
Alexandru Macovei
6aa87f3423
save one indent level in error handling for add_ignore
2019-01-26 16:15:48 +01:00
Alexandru Macovei
74e593c43c
inline value used only once
2019-01-26 16:15:48 +01:00
Alexandru Macovei
df4227c614
Uniform names for config and wants_to_quit. Pass Arc's by ref.
2019-01-26 16:15:48 +01:00
Alexandru Macovei
5ade72a5e1
split spawn_receiver(..) and spawn_senders(..) from scan(..).
...
This is just a split commit, refraining from renaming too much.
The drop(tx) call is no longer necessary, as the first sender
is dropped at the end of spawn_senders(..)
2019-01-26 16:15:48 +01:00
sharkdp
8cfdcf43f6
Lock stdout only once
2019-01-09 08:20:20 +01:00
Alexandru Macovei
051ff5987a
[2018 edition] remove all extern crate lines from sources
2019-01-07 12:52:30 +01:00
Alexandru Macovei
64e6ea9fe9
[2018 edition] run cargo fix edition and edition-idioms
2019-01-07 12:52:30 +01:00
kimsnj
6b40a075cd
exec-batch: fix a panic with -X "echo {}" and pass stdio to child cmd
2018-11-12 21:11:40 +01:00
kimsnj
45d1b15cff
Add support for batch execution of command
2018-11-12 21:11:40 +01:00
sharkdp
f064ee5509
Properly use .ignore files, see #156
2018-10-27 18:11:50 +02:00
sharkdp
81a27fa9bd
Unify error messages, closes #342
2018-10-27 16:30:29 +02:00
sharkdp
6ff58abb6c
Re-enable .ignore files, closes #156
2018-10-27 15:42:02 +02:00
Park Juhyung
095bad550f
Print errors when --verbose is set
2018-10-23 21:50:25 +02:00
yobrave
e2bb932f87
Doc: add chinese readme link ( #347 )
2018-10-19 22:05:15 +02:00
Josh Leeb-du Toit
8543ca645d
Split internals.rs into module and multiple files
...
This PR splits `internals.rs` into the `internal` module with multiple
files, and moves `FdOptions` into `opts.rs`.
The main motivation behind this is to move logic for constructing
`FdOptions` out of the main function and more readable and easier to
understand in the `opts` module. The goal will eventually to be able
to write `FdOptions::from(matches)` and have the options constructed.
2018-10-12 19:14:19 +02:00
Josh Leeb-du Toit
984f04f142
Add print_error macros to replace functions
...
This patch replaces the `print_error` and `print_error_and_exit`
functions with equivalent macros.
2018-10-12 07:31:21 +02:00
Karim SENHAJI
abe8aa55c0
clean-up first implementation of modification date filter
2018-10-10 19:52:37 +02:00
Karim SENHAJI
54c117d72f
Add support for --changed-before and --changed-with for modification time based search
2018-10-10 19:52:37 +02:00
Josh Leeb-du Toit
cb1cfa108b
ErrorCode enum variants to be more descriptive
2018-10-03 16:06:18 +02:00
Josh Leeb-du Toit
8bdd8f8e8f
Move exit code consts into enum
...
Previously, the constants defined in `src/exit_codes` weren't being
used, and the constants for exit codes were being redefined in the
`internals` module.
This PR removes the exit code consts and instead uses an enum defined in
`src/exit_codes`. This centralizes the definitions of exit codes making
them easier to modify and keep track of.
2018-10-03 16:06:18 +02:00
psinghal20
f9c4e8d399
refactor: loosen strict handling of missing --ignore-file
2018-10-03 13:11:51 +02:00
sharkdp
046b0574dc
Rename error => print_error_and_exit and introduce print_error
2018-10-01 22:00:23 +02:00
psinghal20
6407dc4eb4
chore: format code via rustfmt
2018-10-01 22:00:23 +02:00
psinghal20
2ebef2d46f
feat: enable display of error messages
2018-10-01 22:00:23 +02:00
sharkdp
27caa33729
cargo fmt
2018-09-27 23:01:38 +02:00
sharkdp
aa70c5a446
Add --type empty
...
Add a new `empty`/`e` type to search for empty files and/or directories.
To search for both empty files and directories, use one of the
following:
fd --type empty
fd -te
fd --type empty --type file --type directory
To search for empty files, use
fd --type empty --type file
fd -te -tf
To search for empty directories, use
fd --type empty --type directory
fd -te -td
closes #273
2018-08-19 17:05:04 +02:00
sharkdp
50a2bab5cd
Use short-circuiting for --type
searches
...
Reverses the order of boolean checks for `--type` searches,
making them about 10% to 50% faster(!).
2018-08-19 16:27:23 +02:00
sharkdp
641976cf7a
Remove duplicated lstat
syscall
...
Removes a unnecessary `lstat` syscall by calling `.metadata()` only
once. This makes `--type executable` searches about 15% faster.
2018-08-19 16:23:06 +02:00
sharkdp
c1ef68662c
Update for new rustfmt
2018-05-14 21:00:00 +02:00
sharkdp
4172ed03f0
Do not include non-files when using --size
2018-04-25 23:08:05 +02:00
Steve Pentland
2f3b472dfd
Changes from review
2018-04-25 08:14:12 +02:00
Steve Pentland
0207c1371e
Initial impl of size constraints.
...
This adds find-style size constraints with + or - indicating greater
or less than, a numerical size, and a unit
2018-04-25 08:14:12 +02:00
sharkdp
6a9f16e159
Run latest version of rustfmt
2018-04-13 23:13:22 +02:00
sharkdp
37483036e0
Implement --ignore-file
2018-03-26 08:28:22 +02:00
sharkdp
f9a32583a5
Move is_executable to fshelper module
2018-03-25 19:48:09 +02:00
sharkdp
2cf8e7b8a5
Move is_executable to internal module
2018-03-25 18:37:50 +02:00
Pramod Bisht
67f6fdf6a7
Code formating
2018-03-25 16:53:12 +02:00
Pramod Bisht
8ce127e443
changed executable=> executable_only
2018-03-25 16:53:12 +02:00
Pramod Bisht
b1e48efc4a
Addresses #246
...
Some implementation to search by filetype `executables`
2018-03-25 16:53:12 +02:00
sharkdp
5397787824
Skip fifos, sockets, .. when using --type f/d/l
2018-03-15 21:38:52 +01:00
sharkdp
47d95284aa
Skip invalid utf8 filenames, closes #250
2018-02-26 08:20:31 +01:00
sharkdp
631931b431
Only construct entry_path if needed
2018-02-25 18:17:11 +01:00
sharkdp
40d811c7be
Rewrite of file-type filtering leading to 5% speed-up
2018-02-25 18:17:11 +01:00
sharkdp
b4be1f161c
Add support for .fdignore files
2018-02-21 22:55:26 +01:00
Martin Larralde
370d9f081f
Use RegexSet instead of hand-written parser
2018-02-10 14:18:37 +01:00
Martin Larralde
86fe9977e8
Implement multiple suffixes extension support with tests ( #214 )
2018-02-10 14:18:37 +01:00
Dock O'Neal
bc2b7a33ae
Fixing exec hang by disabling ctrl-c handling for exec
2018-01-25 07:47:04 +01:00
David Peter
32a34cf8c9
Introduce maximum output buffer size ( #212 )
...
Closes #191
2018-01-03 10:40:08 +01:00
sharkdp
39fb41f05a
Move exit codes to 'internal' module
2018-01-03 10:00:22 +01:00
Dock
26ad7da347
Using wants_to_quit to exit the sender as well as the reciever ( #211 )
...
Closes #210
2018-01-03 09:26:11 +01:00
sharkdp
a5f5ad6254
Re-enable code style check
2018-01-01 16:00:32 +01:00