1+ #! /bin/bash
2+
3+ # Default values
4+ STARTING_DIR=" "
5+ SKIP_CONFIRMATION=false
6+ SKIP_TUTORIALS=false
7+
8+ # Function to display usage information
9+ usage () {
10+ echo " Usage: $0 [OPTIONS] DIRECTORY"
11+ echo " Delete markdown files from the specified directory and its subdirectories."
12+ echo " "
13+ echo " Options:"
14+ echo " --skip Skip confirmation prompt"
15+ echo " --skip-tutorials Preserve files in directories named 'tutorials'"
16+ echo " -h, --help Display this help message"
17+ echo " "
18+ echo " DIRECTORY argument is required."
19+ exit 1
20+ }
21+
22+ # Process command line arguments
23+ while [ $# -gt 0 ]; do
24+ case " $1 " in
25+ --skip)
26+ SKIP_CONFIRMATION=true
27+ shift
28+ ;;
29+ --skip-tutorials)
30+ SKIP_TUTORIALS=true
31+ shift
32+ ;;
33+ -h|--help)
34+ usage
35+ ;;
36+ -* )
37+ echo " Unknown option: $1 "
38+ usage
39+ ;;
40+ * )
41+ # First non-option argument is the directory
42+ STARTING_DIR=" $1 "
43+ shift
44+ ;;
45+ esac
46+ done
47+
48+ # Ensure a directory was specified
49+ if [ -z " $STARTING_DIR " ]; then
50+ echo " Error: No directory specified."
51+ usage
52+ fi
53+
54+ # Ensure the specified directory exists
55+ if [ ! -d " $STARTING_DIR " ]; then
56+ echo " Error: Directory '$STARTING_DIR ' does not exist or is not accessible."
57+ exit 1
58+ fi
59+
60+ # Script to find, print, and delete markdown files in the specified directory and subdirectories
61+ echo " Searching for markdown files in: $STARTING_DIR "
62+ if [ " $SKIP_TUTORIALS " = true ]; then
63+ echo " Note: Files in directories named 'tutorials' will be preserved."
64+ fi
65+
66+ # Build the find command based on options
67+ if [ " $SKIP_TUTORIALS " = true ]; then
68+ # Find markdown files but exclude those in 'tutorials' directories
69+ files=$( find " $STARTING_DIR " -type f \( -name " *.md" -o -name " *.markdown" \) | grep -v " /tutorials/" )
70+ else
71+ # Find all markdown files
72+ files=$( find " $STARTING_DIR " -type f \( -name " *.md" -o -name " *.markdown" \) )
73+ fi
74+
75+ # Count the total number of markdown files that match our criteria
76+ total_files=$( echo " $files " | wc -l)
77+ if [ -z " $files " ]; then
78+ total_files=0
79+ fi
80+ echo " Found $total_files markdown files that meet deletion criteria."
81+
82+ # Safety confirmation (unless --skip is used)
83+ if [ " $total_files " -gt 0 ] && [ " $SKIP_CONFIRMATION " = false ]; then
84+ read -p " Are you sure you want to DELETE these markdown files? (yes/no): " confirmation
85+ if [ " $confirmation " != " yes" ]; then
86+ echo " Operation cancelled."
87+ exit 0
88+ fi
89+ fi
90+
91+ # Process each file
92+ if [ " $total_files " -gt 0 ]; then
93+ echo " $files " | sort | while read -r file; do
94+ echo " Deleting: $file "
95+ rm " $file "
96+ done
97+ echo " Deletion complete."
98+ else
99+ echo " No files to delete."
100+ fi
0 commit comments