Last active 1 year ago

Revision 30b08772bbaf00c551f887ba49cd431d1268ff44

unwrap.sh Raw
1#!/bin/bash
2# This Bash script flattens a directory structure.
3# It finds files in subdirectories, moves them to a base directory, and renames them to avoid conflicts. Finally, it removes any directories that become empty after the move.
4
5# Function to move and rename files if necessary
6move_and_rename() {
7 local src_file="$1"
8 local base_dir="$2"
9 local filename=$(basename "$src_file")
10 local dest_file="$base_dir/$filename"
11 local counter=1
12
13 # Rename the file if a file with the same name already exists
14 while [ -e "$dest_file" ]; do
15 dest_file="$base_dir/${filename%.*}_$counter.${filename##*.}"
16 counter=$((counter + 1))
17 done
18
19 mv "$src_file" "$dest_file"
20}
21
22export -f move_and_rename
23
24# Find and move files
25find . -mindepth 2 -type f -exec bash -c 'move_and_rename "$0" "$PWD"' {} \;
26
27# Remove empty directories
28find . -type d -empty -delete
29