Skip to content

Instantly share code, notes, and snippets.

@nilovelez
Created May 26, 2017 20:40
Show Gist options
  • Save nilovelez/0653069cbecbdedabbeb054576168c39 to your computer and use it in GitHub Desktop.
Save nilovelez/0653069cbecbdedabbeb054576168c39 to your computer and use it in GitHub Desktop.
#!/bin/bash
mkdir -p out
cd in/
while IFS= read -d '' -r file; do
file="${file#./}"
cp "$file" ../out/"${file//\//-}"
done < <(find . -type f -print0)
cd ..
@nilovelez
Copy link
Author

Example input:

./in/file1.jpg
./in/file2.jpg
./in/cat1/file1.jpg
./in/cat1/file2.jpg
./in/cat1/file3.jpg
./in/cat2/file1.jpg
./in/cat2/file2.jpg
./in/cat2/file3.jpg
./in/cat2/sub/file1.jpg
./in/cat2/sub/file2.jpg
./in/cat2/sub/file3.jpg

Example output:

./out/file1.jpg
./out/file2.jpg
./out/cat1-file1.jpg
./out/cat1-file2.jpg
./out/cat1-file3.jpg
./out/cat2-file1.jpg
./out/cat2-file2.jpg
./out/cat2-file3.jpg
./out/cat2-sub-file1.jpg
./out/cat2-sub-file2.jpg
./out/cat2-sub-file3.jpg

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment