You can do this with an AppleScript. Use the Script Editor in the Utilities folder. Here is a script I wrote for you just now. It works on one folder at a time-- not the top level folder, but the one in your example that is 3587915.
When you run this script it asks you to choose a folder. In this example you would open 3587915 and then click "Choose." Very important: don't choose your 3589919. We are only working on one folder at a time here. If this works for you we can expand to looping through the folders in the top-level folder.
tell application "Finder"
set the_folder to choose folder
set the_folder_name to name of the_folder
set the_subfolders to every folder in the_folder
repeat with I from 1 to count of the_subfolders
set name of every file of item I of the_subfolders to the_folder_name & "_" & I & ".pdf"
move every file of item I of the_subfolders to the_folder
end repeat
--
-- optionally delete the subfolders
delete every folder in the_folder -- put two dashes in front of this line to comment it out
end tell
Here are screenshots showing you how it works. You should practice on a set of folders that don't matter at first. You can see my starting set-up in the first picture and the result in the second. The captions on the pictures are not showing up (for me) so here is what they should be:
Picture 1: Automator Service, with slightly modified AppleScript.
Picture 2: folder_1, folder_2, folder_3, folder_4, and folder_5 each have a single pdf in them. Only folder_1's contents are shown here.
Picture 3: This is the result. The subfolders are gone. The files are named after the parent folder.
You can save the script as an app. Or, you can run the script within a step in Automator since Automator can run an AppleScript. That's in the Utilities section of Automator, "Run AppleScript." I would include a picture but I am new here and am only allowed two pictures until I am upgraded.
If you want to do it with a service, you use almost the same script, but you have to pass the control-clicked folder. Rather than using the AppleScript step "Choose Folder" you tell your Automator Service to "receive selected folder in the Finder" and you set "the_folder" to item 1 of the input. See the first picture. Works like a champ here!
If I were wanting to create several folders within a selected folder and move the existing files within the selected folder, to the folders created within the selected folder, based on the file extension, then I'd use bash
not AppleScript.
The following Service takes the selected folder(s) in Finder and does the following:
- Creates the following folders within the selected folder where "$parent_folder_name" is the name of the selected folder the service is run on:
- "Edits - $parent_folder_name"
- "JPG - $parent_folder_name"
- "RAW - $parent_folder_name"
- "Video - $parent_folder_name"
- Moves the existing files to the newly created folders base on the file extension.
for f in "$@"; do
cd "$f"
d="$(basename "$f")"
mkdir -p "Edits - $d" "JPG - $d" "Raw - $d" "Video - $d"
mv *.JPG "./JPG - $d"
mv *.CR2 "./RAW - $d"
mv *.MOV "./Video - $d"
done
Best Answer
The following solution will move all (and only) ".avi" files within subfolders (one level deep) to the parent folder and delete the subfolders. It may not be the most optimal solution since there are many different ways in which shell scripts can be written to solve a problem.
Assumptions and restrictions:
Caution: This uses a shell script that moves files and deletes directories/files completely. Have a backup before attempting to use it (even minor changes in the script can cause serious and irrecoverable issues). There is no way to recover from any issues except for restoring from a backup.
Solution:
Set the conditions criteria as follows
Set the Do the following to the matched file or folder: as follows
'/bin/sh
).In the textbox below, copy and paste this shell script (I have included comments starting with # - they're just to make it easy to understand or modify)