68 lines
1.3 KiB
Bash
68 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# Get inputs
|
|
SEARCH_PATH="$1"
|
|
PATTERN="$2"
|
|
FILE_TYPE="$3"
|
|
MAX_DEPTH="$4"
|
|
MIN_DEPTH="$5"
|
|
SIZE="$6"
|
|
MODIFIED="$7"
|
|
ADDITIONAL_ARGS="$8"
|
|
|
|
if [[ ! -f "$GITHUB_OUTPUT" ]]; then
|
|
# Write to stdout if the output file doesn't exist.
|
|
GITHUB_OUTPUT="/dev/fd/1"
|
|
fi
|
|
|
|
# Build the find command - start with basic find and path
|
|
FIND_CMD="find \"$SEARCH_PATH\""
|
|
|
|
if [[ -n "$FILE_TYPE" ]]; then
|
|
# Add type filter first
|
|
FIND_CMD="$FIND_CMD -type $FILE_TYPE"
|
|
fi
|
|
|
|
# Add depth constraints before name pattern
|
|
if [[ -n "$MAX_DEPTH" ]]; then
|
|
FIND_CMD="$FIND_CMD -maxdepth $MAX_DEPTH"
|
|
fi
|
|
|
|
if [[ -n "$MIN_DEPTH" ]]; then
|
|
FIND_CMD="$FIND_CMD -mindepth $MIN_DEPTH"
|
|
fi
|
|
|
|
# Add name pattern
|
|
FIND_CMD="$FIND_CMD -name \"$PATTERN\""
|
|
|
|
if [[ -n "$SIZE" ]]; then
|
|
FIND_CMD="$FIND_CMD -size $SIZE"
|
|
fi
|
|
|
|
if [[ -n "$MODIFIED" ]]; then
|
|
FIND_CMD="$FIND_CMD -mtime $MODIFIED"
|
|
fi
|
|
|
|
if [[ -n "$ADDITIONAL_ARGS" ]]; then
|
|
FIND_CMD="$FIND_CMD $ADDITIONAL_ARGS"
|
|
fi
|
|
|
|
# Execute the command and capture output
|
|
OUTPUT=$(eval "$FIND_CMD" 2>/dev/null || true)
|
|
RESULT=$?
|
|
|
|
# Count the number of files found
|
|
if [[ -n "$OUTPUT" ]]; then
|
|
COUNT=$(echo "$OUTPUT" | wc -l)
|
|
echo "files<<EOF" >> "$GITHUB_OUTPUT"
|
|
echo "$OUTPUT" >> "$GITHUB_OUTPUT"
|
|
echo "EOF" >> "$GITHUB_OUTPUT"
|
|
else
|
|
COUNT=0
|
|
echo "files=" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
echo "count=$COUNT" >> "$GITHUB_OUTPUT"
|
|
|
|
exit $RESULT
|