1. remove_duplicates
Given an input folder, identify all duplicate files (with the exact same content) in that folder and display a list to the user, asking them to decide which duplicates to delete. Based on the user's decision, the duplicate files will be either deleted or kept.
Example output:
The following files are identical:
1. <path>/Abc.txt
2. <path>/Test.123
3. <path>/file.log
Please select the file you want to keep [1..3] ? ___
2. hangman
Write an application where the user has to guess a specific word. The words will be read from a dictionary file and will belong to a certain category.
Upon running the application, the user chooses a category, and a random word from the selected category will be chosen. The user can guess one letter at a time. If they guess a letter correctly, the positions of that letter in the word will be displayed. The user is allowed to make a certain number of incorrect letter guesses (depending on the length of the word). During the game, the remaining number of attempts will be displayed.
In the end, the word and the number of unsuccessful attempts will be shown. Words will be saved in specific files for their respective categories. Additionally, scores will be recorded (in a separate file).
Example input: sport
Example output end:
Word: football
Incorrect guesses: 2
3. vcard
Make an application that can generate a vCard given an input json. The resulted file must be readable by tools that can read vCards.
The application should also be be able to read a vCard file and print the information in a human readable way.
4. ascii_table_gen
Read CSV or JSON files and generate an ASCII table that will be outputed to stdout or a file. For CSV files, make sure to support entries that include the separator.
Command line options:
- the input file
- the output file or stdout (default: stdout)
- if there's a separating line between content lines, like in the second example (default: no)
- how to align the cells (left, center, right) (default: left)
5. dir_size
Implement an application that, for a specific location, returns the total size of the files on disk. The script should provide the option to use filters on file names. Filtering can be done using regular expressions.
Example input: ./dir_size /path/to/directory --filter “.*\.exe” --filter “.*\.dll”
Example output: 1.1gb (1073772 bytes)
6. pass_gen
Write an application that generates and displays on the screen a string representing a password that meets the following conditions:
- It will have a length between 12 and 18 characters.
- It will start with an uppercase letter.
- It will contain alphanumeric characters and at least one symbol from the set ("!", "?", "#", "@").
Depending on a parameter given at the command line, the generated password will either be composed of random characters that satisfy the above conditions or be constructed from words in a dictionary saved on disk in a .txt file.
Example input:
./pass_gen
./pass_gen --dict dict.txt
7. folder_to_json
Create a tool that takes a folder path as a parameter and generates a JSON file with information about the directory structure received as a parameter. The output file will contain information about all files and subfolders inside, as well as statistics, like:
- the number of files
- the number of folders
- the number of files for each extension encounted
8. dont_touch_me
Create an app that will monitor changes to a file, and restore it to its original/hardcoded content after each change.
9. rcleaner
Make an app that iterates recursively over a folder, and:
- if it finds a rust project that has a
targetfolder, it will runcargo cleanin that folder - if it finds a
.vsfolder that looks like a Visual Studio folder, it will delete it - if it finds a folder that contains the cache directory tag, it will delete it.
10. take_a_break
Make an app that can receives an operation and a duration at command like, waits the duration, and executes the operation. Supported operations: shutdown/reboot/sleep/hibernate.
The app should work on at least 2 of the mainstream OSes (Linux, Windows, Mac).
Example command:
./take_a_break -s 1m -o hibernate
./take_a_break -s 1h -o sleep
11. password manager
Implement a CLI password manager that allows users to store credentials encrypted in a local JSON file (using serde and rand crates). The password manager should have the following commands implemented:
- add a new credential with a title, username, password
- view all credentials titles
- search for a credential
- delete a credential
./password-manager add <title> <username> <password>
./password-manager view
./password-manager search <title>
./password-manager delete <title>
12. markdown to HTML converter
Implement a CLI markdown to HTML converter that allows users to parse basic Markdown syntax (headers, bold, italics) and output the equivalent HTML.