| Crates.io | fpick |
| lib.rs | fpick |
| version | 0.8.0 |
| created_at | 2024-02-02 15:17:59.48429+00 |
| updated_at | 2025-08-18 17:50:03.270995+00 |
| description | Interactive file picker |
| homepage | https://github.com/igrek51/fpick |
| repository | https://github.com/igrek51/fpick |
| max_upload_size | |
| id | 1124435 |
| size | 131,267 |
fpick is an interactive file picker to traverse through directories tree in a terminal.

fpick returns the selected path to standard output, so you combine it with other commands:
cd "$(fpick)"
cat $(fpick)
cargo install fpick
This will install fpick binary in Rust's Path.
Alternatively, you can download the compiled binary:
curl -L https://github.com/igrek51/fpick/releases/download/0.7.5/fpick -o ~/bin/fpick
chmod +x ~/bin/fpick
Type cd "$(fpick)" to quickly change the directory interactively:
Enter to go inside.Enter again (when being focused on .) to exit and change the directory.Launch the interactive file picker by running fpick.
Navigate with keyboard:
↑ and ↓ to move between files and directories,→ to enter a directory.← to go up,Enter on selected file to exit and print its path to stdout.Enter on selected directory to enter inside it.Enter on . to pick current directory.Esc or Ctrl + C to exit./ to go to root directory.Alt + Enter on selected file / directory to open context menu and execute an operation:
See fpick --help for options.
Usage:
fpick [OPTIONS] to select a file in a current directory and return its pathfpick [OPTIONS] <PATH> to select a file starting from a specified directoryOptions:
--relative, --rel, -r - Print selected path as relative to the starting directory--version - Print version--help, -h - Print usageYou can use it in combination with other commands, for example to print the selected file:
cat $(fpick)
Tired of typing ls and cd, over and over again,
just to find a file in a deeply nested directory tree?
Use fpick to navigate through directories interactively:
cd "$(fpick)"
Set alias for quick access:
alias cfp='cd "$(fpick)"'
Move file by interactively picking the source and destination:
mv "$(fpick)" "$(fpick)"