Commit graph

620 commits

Author SHA1 Message Date
xanonid
441a235a0f Simplify code a bit (suggestions by clippy) 2020-12-06 11:52:10 +01:00
xanonid
2cd3de8b94 Use NO_COLOR env variable check also for help screen 2020-12-06 11:52:10 +01:00
Marco Sirabella
6830b3dee9 Better defaults for LsColors 2020-12-06 11:48:19 +01:00
Platon Pronko
e97a1e90cb Add exact size support to the --size filter (#669) 2020-12-06 11:47:27 +01:00
sharkdp
b2fa188029 Avoid panic when sending errors after receiver shutdown
fixes #678
2020-10-28 13:10:25 +01:00
David Peter
e0adb45d08
Fail with error message if numeric arguments can not be parsed
closes #675
2020-10-25 21:18:53 +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
Allen Wild
99934ab98c add --base-directory, --path-separator, and --search-path to the man page
These options are in `fd --help` but missing from the man page.
Also fix a typo in the help text for --base-directory.
2020-10-14 08:35:09 +02:00
Fredrik Fornwall
a851570b15 Disable jemalloc on Android (fixes #636 and #642)
Disabling jemalloc for Android fixes a build failure since jemalloc does
not build out of the box for that platform on older API versions.

Android started using jemalloc as the system allocator around 2014 for
most devices. In the latest Android version (11) the system allocator
has been switched to Scudo, which while not being jemalloc is modern and
actively maintained and should be used for most software on Android.

See:
- https://android-developers.googleblog.com/2020/06/system-hardening-in-android-11.html
- https://blog.nsogroup.com/a-tale-of-two-mallocs-on-android-libc-allocators-part-2-jemalloc/
- https://stackoverflow.com/questions/2266762/android-libc-version-and-malloc-implementation
2020-10-08 12:45:48 +02:00
gorogoroumaru
74c3431a2b
improve time option usage (#645)
* improve time option usage
2020-09-10 00:34:27 -06:00
sharkdp
a81fef9992 Windows: Check for xterm-256color environment variable as a proxy for color support 2020-05-25 12:17:32 +02:00
sharkdp
53c338d71f Windows: Always enable colors if --color=always is set 2020-05-25 12:17:32 +02:00
sharkdp
1d1eefdb7b Disable jemalloc on macOS
This is a workaround for #498. See issue for details.

closes #498
2020-05-19 17:55:21 +02:00
sharkdp
ddee6aa8f3 Revert "Always enable colors on Windows, closes #469"
This reverts commit a4e78519c4.
2020-05-19 17:09:27 +02:00
sharkdp
e3c77ef7f5 Update --size documentation
closes #584
2020-05-19 17:06:32 +02:00
sharkdp
9d3cb69935 Minor refactoring 2020-05-19 15:57:47 +02:00
DJRHails
da9af8c1eb Improve consistency of linting 2020-05-19 15:57:47 +02:00
DJRHails
4f4591bfdc Correct Err return to prevent panic 2020-05-19 15:57:47 +02:00
DJRHails
28d6a4f518 Check for no valid search paths to prevent panic 2020-05-19 15:57:47 +02:00
DJRHails
42719624a8 Refactor to for-loop 2020-05-19 15:57:47 +02:00
DJRHails
c5a311d3cc Allow for missing directories 2020-05-19 15:57:47 +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
1a16003cca [ownership][errs] ':' and '' args to --owner result in noop; reject strings with more than one ':' 2020-05-18 21:11:33 +02:00
Alexandru Macovei
6a68ac8c27 [ownership] add help text for --owner 2020-05-18 21:11:33 +02:00
Alexandru Macovei
09cdf9831d [ownership] parse leading exclamation mark as negation of ownership component 2020-05-18 21:11:33 +02:00
Alexandru Macovei
22a55361e0 [ownership] change uid/gid storage to tristate enum for negation 2020-05-18 21:11:33 +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
Alexandru Macovei
4f9a02400a [ownership] add --owner arg parsing and storage 2020-05-18 21:11:33 +02:00
Alexandru Macovei
30cb4adc61 [ownership] initial struct, parsing, and test framework 2020-05-18 21:11:33 +02:00
Alex Kitchens
151eaad043 Fix "unnecessary braces" warning
Original warning:
```
warning: unnecessary braces around block return value
 --> src/filter/size.rs:5:39
  |
5 |     static ref SIZE_CAPTURES: Regex = { Regex::new(r"(?i)^([+-])(\d+)(b|[kmgt]i?b?)$").unwrap() };
  |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these braces
  |
  = note: `#[warn(unused_braces)]` on by default

warning: 1 warning emitted
```
2020-05-10 21:27:55 +02:00
Alexandru Macovei
4f4330167a Fix some clippy lints, and format 2020-05-01 14:08:53 +02:00
Seamus Connor
b22285ffe4 Fix --glob behavior with empty pattern
With an empty pattern, --glob results in no matches. This does not
align with the behavior of --fixed-strings or --regex. Update the
initialization code to handle globs with empty patterns.
2020-04-26 22:01:29 +02:00
Tobias Kortkamp
04bcd546b2 Also add NetBSD and OpenBSD 2020-04-16 20:33:32 +02:00
Tobias Kortkamp
4b5e8941a7 Fix --list-details on FreeBSD 2020-04-16 20:33:32 +02:00
sharkdp
0335cc362b Do not allow list-details in combination with -1 2020-04-16 10:11:05 +02:00
sharkdp
1a96544b29 Remove two options from short -h help text 2020-04-16 10:02:29 +02:00
sharkdp
cb56add1d8 Add new --type socket and --type pipe filters
closes #511
2020-04-16 09:59:45 +02:00
sharkdp
4287cddc00 Add test 2020-04-15 23:32:28 +02:00
sharkdp
0b7febc3b6 Windows support (if GNU ls is installed) 2020-04-15 23:32:28 +02:00
sharkdp
d91100e354 Add comment why we prefer gls 2020-04-15 23:32:28 +02:00
sharkdp
0f5500adfc Do not show output of 'gls --version' 2020-04-15 23:32:28 +02:00
sharkdp
2685728695 Add MacOS support for -l/--list-details 2020-04-15 23:32:28 +02:00
sharkdp
3b42898a69 Always enable colors on Windows, closes #469 2020-04-15 19:23:59 +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
47974b6479 --glob: '*' does not match on path separators 2020-04-15 16:41:56 +02:00
Danny Mösch
2bab4a2249 Add alias -1 for --max-results=1 2020-04-10 21:39:30 +02:00
sharkdp
95eae00126 Fix test on Windows 2020-04-04 18:46:08 +02:00
sharkdp
6c9e743d43 Print path as raw bytes, allowing invalid UTF-8 filenames to be passed to other processes 2020-04-04 18:46:08 +02:00
sharkdp
7e3c69c096 Reimplement dirname, basename, remove_extension for OsStr 2020-04-04 18:46:08 +02:00
sharkdp
439548c25a panic => unreachable 2020-04-04 18:46:08 +02:00
sharkdp
ed45d1c5af Remove duplicate 'strip prefix' function 2020-04-04 18:46:08 +02:00
sharkdp
e44f2f8540 Rewrite replace_path_separator function 2020-04-03 23:01:57 +02:00
sharkdp
2ea77e7cdc Add TODOs, move function 2020-04-03 22:51:41 +02:00
sharkdp
4815ee416e Remove process::exit instance 2020-04-03 22:36:32 +02:00
sharkdp
53557ef471 Clean up include order 2020-04-03 22:36:32 +02:00
sharkdp
f9372b55d5 Remove irrelevant TODO 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
bce95274e3 Proper error handling in main.rs 2020-04-03 22:36:32 +02:00
sharkdp
af9d8082a1 Better error message 2020-04-03 22:36:32 +02:00
sharkdp
094516aec3 Refactor directory handling 2020-04-03 22:36:32 +02:00
sharkdp
33eb857a81 Cleanup 2020-04-03 22:36:32 +02:00
sharkdp
6e96154d86 Add tests for strip_current_dir 2020-04-03 22:36:32 +02:00
sharkdp
556c40e1f4 Move strip_current_dir 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
342d12db3f Remove possibility to use '--exec <cmd>' with a single dash 2020-04-03 22:36:32 +02:00
sharkdp
c79d1638f5 Move MAX_BUFFER_LENGTH 2020-04-03 22:36:32 +02:00
sharkdp
9ef9bf7b80 Add tests for regex_helper 2020-04-03 22:36:32 +02:00
sharkdp
809fd8fb78 Move regex helpers to new module 2020-04-03 22:36:32 +02:00
sharkdp
a3060f952e Move error macros to error.rs 2020-04-03 22:36:32 +02:00
sharkdp
65096a653e Move FdOptions to Options 2020-04-03 22:36:32 +02:00
sharkdp
9f738ad995 Move filter up from internal 2020-04-03 22:36:32 +02:00
sharkdp
5c27ab1a06 Move filetypes up from 'internal' 2020-04-03 22:36:32 +02:00
sharkdp
2cfb1a2bb2 Adapt --list-details help message 2020-04-03 11:28:01 +02:00
sharkdp
938dafda28 Clean up unused help texts 2020-04-03 11:26:20 +02:00
sharkdp
e2a7d3446b Inline the help texts 2020-04-03 11:24:47 +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
33df48ebe4 Remove claim about unique search results 2020-04-03 10:07:46 +02:00
sharkdp
c9dc617711 Rename --list to --list-details 2020-04-03 09:58:47 +02:00
sharkdp
da5cd12b24 Add -l/--list option
Add a new `-l`/`--list` option to show more details about the search results. This is basically
an alias for `--exec-batch ls -l` with some additional `ls` options.
This can be used in order to:
    * see metadata like permissions, owner, file size, modification times (#491)
    * see symlink targets (#482)
    * achieve a deterministic output order (#324, #196, #159)
    * avoid duplicate search results when multiple search paths are given (#405)
2020-04-03 09:58: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
Dave Parfitt
70448b0006 honor the NO_COLOR env var 2020-03-19 22:56:28 +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
a5fe138a25 Extract ExitCode::is_error helper 2020-02-22 12:32:35 +01:00
fusillicode
b23cfc383f Switch back from Self to ExitCode 2020-02-22 12:32:35 +01:00
fusillicode
e46998278a Fix typo in a job.rs comment 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
fusillicode
fa7d49282b Restun exit code for generate_and_execute? 2020-02-22 12:32:35 +01:00
sharkdp
2f18903b29 Fix zsh autocompletion problem, closes #487 2020-02-06 21:52:09 +01:00
MarcoIeni
320d7fca0a Sort search results when using -X option 2020-01-02 21:52:26 +01:00
sharkdp
f7d1938556 Formatting 2020-01-01 12:05:50 +01:00
sharkdp
328c6640be Formatting 2020-01-01 12:05:33 +01:00
sharkdp
c001dd47a7 Hide --one-file-system from the short help text 2020-01-01 11:54:01 +01:00
sharkdp
a9c7696ecc Small stylistic change 2020-01-01 11:54:01 +01:00
Simon Engmann
cd2dc5714e Compare --one-file-system to find's -mount/-xdev 2020-01-01 11:54:01 +01:00
Simon Engmann
ed6c184020 Shorten cfg!() checks 2020-01-01 11:54:01 +01:00
Simon Engmann
6f7d10870c Add aliases for --one-file-system
The functionality provided by `--one-file-system` is called
`-mount`/`-xdev` under `find`, so provide those aliases as a compromise.
2020-01-01 11:54:01 +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
762f551ff4 Update --help text 2019-12-23 16:07:38 +01:00
Rafał Hajdacki
fb205f5057 Allow changing current working directory of fd 2019-12-23 15:42:33 +01:00
EasiestSoft
32fdbb1eae Fixed typos, occurence to occurrence, seach to search 2019-12-19 21:52:43 +01:00
Deepansh
a6ed0fc5ef Fix CI error
Fixes sharkdp/fd#496
2019-10-09 23:09:21 +02:00
Deepansh Sood
266499800b Fix idempotent flags
Add 'overrides_with' to format flags.
Resolves sharkdp/fd#488
2019-10-09 23:09:21 +02:00
sharkdp
d48aeda6b2 Apply clippy suggestions 2019-09-23 20:23:11 +02:00
Nathan Henrie
59c27baf0f Expand help for -u, add to manpage 2019-09-17 22:21:37 +02:00
Nathan Henrie
33f385692d Add -u alias to long --help only
Fixed sharkdp/fd#92, specifically https://github.com/sharkdp/fd/issues/92#issuecomment-522756754
2019-09-17 22:21:37 +02:00
sharkdp
9350c8544d Clean up cfg line 2019-09-15 18:58:05 +02:00
sharkdp
1ab4e87dda Disable jemalloc for musl builds 2019-09-15 18:58:05 +02:00
sharkdp
4e20803e7d Disable jemallocator on Windows 2019-09-15 18:58:05 +02:00
sharkdp
5a154866e3 Use jemalloc
Benchmark #1: ./fd-sys-alloc '[0-9]\.jpg$' /home/shark
  Time (mean ± σ):     246.8 ms ±   3.4 ms    [User: 960.1 ms, System: 810.0 ms]
  Range (min … max):   244.1 ms … 257.1 ms    12 runs

Benchmark #2: ./fd-jemalloc '[0-9]\.jpg$' /home/shark
  Time (mean ± σ):     201.0 ms ±   3.0 ms    [User: 833.9 ms, System: 666.9 ms]
  Range (min … max):   196.1 ms … 206.9 ms    14 runs

Summary
  './fd-jemalloc '[0-9]\.jpg$' /home/shark' ran
    1.23 ± 0.03 times faster than './fd-sys-alloc '[0-9]\.jpg$' /home/shark'
2019-09-15 18:58:05 +02:00
sharkdp
08fcd7ce59 Make --changed-within/before work for directories
closes #470
2019-09-15 17:03:23 +02:00
sharkdp
eac20a8132 Add --regex option to override --glob 2019-09-15 16:47:38 +02:00
sharkdp
d5da615c17 Implement glob-based searches
closes #284
2019-09-15 16:47:38 +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
f14b854bc1 Use existing Cow pointer 2019-09-15 10:57:27 +02:00
sharkdp
8f86a06c1a Extend help text 2019-09-15 10:57:27 +02:00
Nathan Moreau
588e344d5b Remove type annotation. 2019-09-15 10:57:27 +02:00
Nathan Moreau
e3af9b0307 Factor into a helper function; adapt to print_entry_uncolorized. 2019-09-15 10:57:27 +02:00
Nathan Moreau
29bf9d731d Handle any string replacement. 2019-09-15 10:57:27 +02:00
Nathan Moreau
3857fa8f62 Amend clap configuration for path-separator. 2019-09-15 10:57:27 +02:00
Nathan Moreau
24e108e1ad Add path-separator option.
Example usage: `fd.exe --path-separator /` on windows.
2019-09-15 10:57:27 +02:00
sharkdp
1d16cd855e Fix warnings 2019-09-15 10:48:29 +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
Tim Holland
074cfad3d4 Remove deprecated trim_left(_matches)?
warning: use of deprecated item 'core::str::<impl str>::trim_left_matches': superseded by `trim_start_matches`
   --> src/main.rs:222:28
    |
222 |                 .map(|e| e.trim_left_matches('.'))
    |                            ^^^^^^^^^^^^^^^^^
    |
    = note: #[warn(deprecated)] on by default
2019-03-02 08:15:12 +01: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
Alexandru Macovei
d8bd5f9d51 macronize repetitive tests in exec/input 2019-01-26 16:15:48 +01:00
sharkdp
8cfdcf43f6 Lock stdout only once 2019-01-09 08:20:20 +01:00
sharkdp
8c197d2866 Update to new lscolors version 2019-01-08 21:28:43 +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
sharkdp
33feb511f0 Formatting 2019-01-01 17:40:53 +01:00
sharkdp
985fab16bb Add note about short and long help text, closes #286 2019-01-01 17:40:30 +01:00
sharkdp
a17a3fe5ef Add comment about hidden files/directories, see #377 2019-01-01 16:31:06 +01:00
sharkdp
4b5efa3438 Use lscolors crate
Use my new [lscolors](https://github.com/sharkdp/lscolors) crate instead
of the internal `lscolors` module

- Speeds up `LS_COLORS` querying, leading to a nice 25% performance
  improvement when
- Adds support for 24-bit colors and background colors

closes #368
closes #363
2018-12-14 23:20:18 +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
kimsnj
32ec7afc3a Add test with multiple tokens in an argument 2018-11-10 10:29:35 +01:00
teresy
34b8c0df73 refactor: use shorthand fields 2018-11-08 11:48:12 +01:00
sharkdp
f064ee5509 Properly use .ignore files, see #156 2018-10-27 18:11:50 +02:00
sharkdp
daf5191aac Add note about .ignore files 2018-10-27 16:44:34 +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
sharkdp
974802e817 Hide a few options from short '-h' text 2018-10-27 15:38:26 +02:00
sharkdp
deea31cbbc Add aliases, change help text 2018-10-27 15:34:10 +02:00
Josh Leeb-du Toit
caad43fe6c Use oss_vec fn in internal/mod.rs tests 2018-10-24 16:31:16 +02:00
Park Juhyung
095bad550f Print errors when --verbose is set 2018-10-23 21:50:25 +02:00
Park Juhyung
f7a96bd980 Fix typo at max-buffer-time's help message
"tothe" -> "to the"
2018-10-23 07:03:21 +02:00
Casey Primozic
cdf737bf5c Add search-path option
* Multiple `--search-path` arguments can be supplied which replace the positional `path` argument for providing directories which will be searched.
 * When a `--search-path` argument is provided, positional `path` arguments will not be allowed
2018-10-22 19:26:36 +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
8691ab4bed Minor changes to improve readability
This patch makes minor changes to make the code a little easier to
understand. For example, using the `?` operator in some fns that return
an `Option` type.
2018-10-04 09:44:09 +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
Josh Leeb-du Toit
adc467b2b2 Add exec tests and cfg(test) compiler guards
Some tests throughout the codebase were just functions marked with the
`#[test]` macro. It is convention to have these test functions in a
`test` module with a compiler guard `cfg(test)`. This PR updates the
tests that aren't already setup like this to be in the `test` module.

Additionally, this PR also adds tests to the `exec` module to check the
remaining `Token` enum variations.
2018-10-03 13:04:22 +02:00
sharkdp
56b6389dac --exec: Do not exit on errors 2018-10-01 22:00:23 +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
8fb25f15c9 Just reference --max-depth in --maxdepth help 2018-09-13 22:33:18 +02:00
Mahmoud Al-Qudsi
d375b5e1f5 Add --maxdepth as hidden alias for --max-depth
For muscle memory compatibility with `rg`. This variant will not show in
the help or in the program options, and is only checked if `--maxdepth`
is not specified.
2018-09-13 22:33:18 +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
c428f52209 Run cargo fmt 2018-08-03 21:20:48 +02:00
Alexandru Macovei
4dee8b7940 fix build for rust 1.20.0 2018-07-02 19:55:03 +02:00
Alexandru Macovei
9a45947234 simplify SizeFilter as enum with value instead of struct
Also move the touched cfg(test) code into cfg(test) module and trim test names
2018-07-02 19:55:03 +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
0bbc7f5219 Update regex and match, update comments 2018-04-25 08:14:12 +02:00
Steve Pentland
ace3f512d3 Make compatible with min rust version 2018-04-25 08:14:12 +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
388b90e624 Update USAGE and man page 2018-03-26 10:25:33 +02:00
sharkdp
37483036e0 Implement --ignore-file 2018-03-26 08:28:22 +02:00
David Peter
8c1b037279
Normalize absolute paths, fixes #268 (#270)
* Normalize absolute paths, fixes #268
* Split unit tests into several tests
2018-03-25 23:47:58 +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
ffd49c60bd Error if user supplied path instead of pattern 2018-03-15 07:53:00 +01:00
sharkdp
89a8f5573d Formatting change 2018-03-15 07:53:00 +01:00
sharkdp
c654159bf2 Update to ansi_term 0.11 2018-03-12 23:19:20 +01:00
Josh Stone
588b0dc7c9 Update to regex-syntax 0.5
The new regex 0.2.7 has updated to regex-syntax 0.5, so it seems prudent
to update fd's dependency too, if only to avoid duplication.
2018-03-12 22:11:00 +01:00
sharkdp
88fb9d73d1 Run updated version of rustfmt 2018-03-12 17:46:13 +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
e5ee5eb7b3 Minor speedup for strip_prefix 2018-02-25 10:25:59 +01:00
sharkdp
b4be1f161c Add support for .fdignore files 2018-02-21 22:55:26 +01:00
Pramod Bisht
7a3994decb Changes as per the instruction of cargo fmt -- --write-mode=diff 2018-02-19 21:17:11 +01:00
Pramod Bisht
7e8c2248d0 Fixes: #234
Giving suggestion to use `--fixed-strings` in case user passes invalid metacharacters as a regex.
2018-02-19 21:17:11 +01:00
sharkdp
814d37030e Implement -F/--fixed-strings/--literal 2018-02-10 15:55:06 +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
Steve Pentland
b4d39270d6 Allow -exec to work as --exec (#226)
* Replace usage of `-exec` by `--exec`, except when it is used as a value that is given to `--exec/-exec/-x`.
* Limit usage of --exec option to single instance.
2018-01-29 20:32:46 +01:00
Dock O'Neal
bc2b7a33ae Fixing exec hang by disabling ctrl-c handling for exec 2018-01-25 07:47:04 +01:00
sharkdp
941caeb053 Update documentation 2018-01-03 10:40:28 +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
Thejaswi Kadur
faf934da4b Added support for filtering by multiple filetypes and extensions (#205)
Closes #177 
Closes #199
2018-01-01 12:09:33 +01:00
Dock
4d66c84109 Correct exit codes (#202)
* Changed exit code on ctrl-c to 130 to match specification
* Changed exit code when stdout errors. 1 for general error.
2017-12-18 06:53:34 -08:00
sharkdp
aaf9e024d5 Updates for 6.1.0 2017-12-09 21:40:13 -08:00
Matthias Reitinger
5784823aca Unify execute_command across platforms 2017-12-09 21:10:48 -08:00
Dock
51aea57a6a Add multiple path support (#182)
* Adding support for multiple paths. (panic)

- Started adding multiple file support
- fd panics with multiple files right now

* Moved the ctrlc handler to main.

- Moved the ctrlc handler to main so we can search multiple files

* Tests now allow custom directory setup

- TestEnv::new() now takes two arguments, the directories to create and
the files to create inside those directories.

* rust-fmt changes

* rust-fmt changes

* Moving code around, no need to do everything in one big loop

- PathDisplay was never actually used for anything, removed it during refactor of main
- Removed redundant logic for absolute paths
- Moved code placed needlessly inside a loop in the last commit outside of that loop.

* Moving code around, no need to do everything in one big loop

- PathDisplay was never actually used for anything, removed it during refactor of main
- Removed redundant logic for absolute paths
- Moved code placed needlessly inside a loop in the last commit outside of that loop.

* Removed commented code in testenv

* Refactored walk::scan to accept the path buffer vector. Using the ParallelWalker allows for multithreaded searching of multiple directories

* Moved ctrlc handler back into walker, it is only called once from main now.

* Moved the colored output check back to it's original place

* Removing shell-escape, not sure how it got added...

* Added test for `fd 'a.foo' test1` to show that a.foo is only found in the test1 and not the test2 direcotry

* Removing side effect from walk::scan, `dir_vec` is no longer a mutable reference and an iterator is being used instead.

* Running rustfmt to format code correctly
2017-12-06 14:52:23 -08:00
Ubuntu
c165ff0546 Refactorying main.rs : remove unused variable (empty_pattern) 2017-12-03 12:21:09 +01:00
ptzz
9bd1d12c00 Add --no-ignore-vcs option
When passed, .gitignore files will not be respected.
2017-11-22 23:18:22 +01:00
Dock
c0bfc65d88 Handle terminal signals (#128)
fixes #87
2017-11-22 23:05:09 +01:00
sharkdp
5ed7514096 Update error message if command could not be found 2017-11-15 23:24:11 +01:00
Matthias Reitinger
3c5d8a1e86 Fix typos 2017-11-15 23:18:36 +01:00
Matthias Reitinger
ccdbc76f5a Fix execute_command on Unix 2017-11-15 23:18:36 +01:00
Matthias Reitinger
5f4a1203b4 Update documentation for --exec syntax change 2017-11-15 23:18:36 +01:00
Matthias Reitinger
0f82fe7ec0 Rename TokenizedCommand to CommandTemplate 2017-11-15 23:18:36 +01:00
Matthias Reitinger
c18caaa6f6 Remove CommandTicket to avoid Vec allocation 2017-11-15 23:18:36 +01:00
Matthias Reitinger
18709b1ede Remove shell with --exec 2017-11-15 23:18:36 +01:00
sharkdp
26f71dd21a Remove superfluous path.replace
See #153
2017-11-11 08:58:55 +01:00
David Peter
46db4a3860 Fix Windows module 2017-10-26 22:20:12 +02:00
sharkdp
b3f1e1844d Move 'win' crate back into local module
This is necessary to publish on crates.io
2017-10-26 21:59:12 +02:00
sharkdp
bba5c4f607 Fix some clippy warnings 2017-10-26 21:13:56 +02:00
J.W
614f576c47 Add TODOs and FIXMEs about Windows 2017-10-26 20:56:32 +02:00
J.W
dc29ef70c4 Fix Input::remove_extension and Input::dirname 2017-10-26 20:56:32 +02:00
J.W
6b232a82ee Fix --exec 2017-10-26 20:56:32 +02:00
J.W
87ba4e3bb0 Fix root directory for Windows 2017-10-26 20:56:32 +02:00
sharkdp
9d26b74c2a Workaround for the unsafe block.
See #147
2017-10-25 22:45:00 +02:00
sharkdp
5ad69fb2fb Add support for exclude-patterns
* Add `--exclude`/`-E` option.
* Support for multiple exclude patterns

Example:
``` bash
> fd --exclude 'tests/**/*.rs' mod
src/exec/mod.rs
src/fshelper/mod.rs
src/lscolors/mod.rs
```

Closes #89
2017-10-25 22:22:12 +02:00
J.W
e38b7d7bff Fix --type: skip if file type is unknown 2017-10-25 18:29:40 +02:00
John L. Villalovos
4bf7ab67d0 Typo fix: Change 'descent' to 'descend'
The correct word is 'descend'

Change-Id: I6833bd28e84841799f3f060239a36876949d890e
2017-10-25 18:18:33 +02:00
sharkdp
e9cf8af911 Updates and preparations for v5.0 2017-10-22 12:10:51 +02:00
Antti Keränen
701b8f209b Relicense under MIT/Apache-2.0 2017-10-22 10:36:42 +02:00
J.W
570ea78d24 jakwings/fd@a44e677 -> subdirectory "win" 2017-10-21 00:33:49 +02:00
J.W
ce73c086b6 Auto disable colored output for unsupported Windows shells 2017-10-21 00:33:49 +02:00
Michael Aaron Murphy
6a01faf6e1 Escape exec Inputs 2017-10-21 00:29:46 +02:00
Jose Narvaez
6dc704a18e Removed unnecessary exclusion of Redox in cond-compilation and narrowed what we import from . 2017-10-20 12:59:36 +02:00
Jose Narvaez
715b07599b RedoxOS support. 2017-10-20 12:59:36 +02:00
J.W
8d85debc12 Refactor path handling (fixes #113)
* Fix path check
* Fix full path matching
* Allow more simple driver names in Windows tests
* Factor out special is_dir() check for "." and ".."
2017-10-18 20:04:34 +02:00
Michael Aaron Murphy
16eed82ca1 Handle OS-specific path separators when manipulating paths 2017-10-15 11:20:55 -04:00
Michael Aaron Murphy
2a23905af5 Fix merge conflicts 2017-10-15 09:37:48 -04:00
J.W
54d9dde0d4 Use .canonicalize() to check paths & Reword comments 2017-10-15 15:01:24 +02:00
J.W
e649c8fa79 Use a uniform output format for searching ../
closes #107, fixes #82 by the way
2017-10-15 15:01:24 +02:00
Michael Aaron Murphy
ad1b4f3b2b Optimize grouping for *nix archs 2017-10-14 21:45:31 -04:00
Michael Aaron Murphy
1bc58b2fbb Group outputs from exec 2017-10-14 18:06:49 -04:00
Michael Aaron Murphy
718f723d31 Enable absolute paths w/ exec 2017-10-14 16:42:47 -04:00
Michael Aaron Murphy
884bd41cae Apply cargo fmt 2017-10-14 14:04:04 -04:00
Michael Aaron Murphy
fb1cd3a322 Fix for older builds
Rust 1.19 will be a requirement, however.
2017-10-14 13:38:54 -04:00
Michael Aaron Murphy
137fe2e697 Merge Conflicts 2017-10-14 12:35:16 -04:00
Michael Aaron Murphy
4a5a5faf4d Implement --exec feature
Closes #84
2017-10-14 12:24:17 -04:00
J.W
f2632d5fce Dot "." also matches newline by default (closes #111) 2017-10-14 16:12:11 +02:00
sharkdp
c38ef0e9b2 Fix description of smart-case in help text 2017-10-14 12:09:34 +02:00
Matthias Reitinger
7150c9a3a9 Refactor output.rs 2017-10-14 11:11:06 +02:00
Matthias Reitinger
0b04f39398 Split up print_entry in colorized and uncolorized helper functions. 2017-10-14 11:11:06 +02:00
Matthias Reitinger
0677e6331d Fix too many path separators on Windows (#93). 2017-10-14 11:11:06 +02:00
Matthias Reitinger
b441528067 Improve smart case to only consider literal uppercase chars (#103) 2017-10-14 11:03:21 +02:00
sharkdp
8fc3a83d92 Use absolute path to perform search, fixes #81
Previously, we were using the relative path to extract the search
string. For the current directory, the returned relative path was equal
to `""`. This is why the current directory did not show in the search
results (see #81).

This commit also changes the way that `--full-path` works, which was
previously working on relative paths. It seems more useful to search the
absolute path, though. Otherwise, search results could change just by
calling fd (with a given search path) from a different directory.
2017-10-13 18:16:26 +02:00
Antti Keränen
049b9ec06b Format the source code using rustfmt 2017-10-12 19:33:14 +02:00
J.W
e075e1cf7c Add -i, --ignore-case 2017-10-12 07:28:05 +02:00
Rav Chandra
35e5ecd492 liberally accept >2 -u options as per ripgrep 2017-10-11 23:15:21 +02:00
Rav Chandra
4f2d9e77b3 Add ripgrep aliases for no-ignore and hidden 2017-10-11 23:15:21 +02:00
Garrett Squire
ccb899a511 break main into separate modules 2017-10-11 08:21:09 +02:00
Jean-Christophe Petkovich
affe41949d Switch symlink arg from 's' to 'l' (#83)
closes #80
2017-10-09 21:25:30 +02:00
sharkdp
d8da6ec83c Update long help text 2017-10-07 15:15:30 +02:00
David Peter
4731dc670c Enhanced Windows support, see #70
* Use easier way to convert path components
* Fix failing tests on Windows
2017-10-07 09:40:44 +02:00
Alejandro Baez
a84536a173 app: refactor to ripgrep style for long_help 2017-10-07 09:13:39 +02:00
sharkdp
0aae4a3d46 Update help text 2017-10-05 21:35:22 +02:00
sharkdp
34e4620e26 Code style udpates 2017-10-05 21:31:44 +02:00
Florian Hofmair
396b9baaa5 Use clap to generate shell completions 2017-10-04 18:00:25 +02:00
Antti Keränen
4ec33d064c Add a comment about the default value of --threads 2017-10-03 20:21:49 +02:00