Mv series out of mixed folder & identify substring


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Mv series out of mixed folder & identify substring
# 1  
Old 02-22-2014
Mv series out of mixed folder & identify substring

Dear unix-Community,

great to be here!
Actually i try to build a script to sort out my serials into an series-folder.
Reason is: plex cant handle mixed folder filled with other stuff than series only.

First shot was ls in combination with grep and regex.
Got no positiv result.

Then i used find:
Code:
find . -maxdepth 1 -regex '.*[sS][0-9][0-9][eE][0-9][0-9].*'

works fine. But im wondering why this won't work:
Code:
find . -maxdepth 1 -regex '.*[sS]\d{2}[eExX]\d{2}.*'

Ok - Now it would be great to create a new folder named with the titel of the serial. but it's a bit difficult to get the name as substring before the SxxExx-Part (or including the Sxx one).
Code:
find $1 -maxdepth 1 -regex '.*[sS][0-9][0-9][eE][0-9][0-9].*' -exec basename {} \; | while read FILE
do
  #mkdir SerialTitel.S01
  #mv $FILE ../sorted/SerialTitel.S01/
  # #instead of:
  mv $FILE ../sorted/
done

Im happy about some ideas. I'll keep you up to date of my progress.

Good Weekend
Zack
# 2  
Old 02-22-2014
Are you trying to:
1. Find files with the below pattern in the name
2. Create a subdirectory named: SerialTitel.xxx where xxx is first 3 positions of pattern starting with the s or S
3. Move file(s) found to this new subdirectory


Find file(s) named:
Code:
.*[sS][0-9][0-9][eE][0-9][0-9].*

Match any single character that is not a line break character «.*»
   Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match a single character present in the list “sS” «[sS]»
Match a single character in the range between “0” and “9” «[0-9]»
Match a single character in the range between “0” and “9” «[0-9]»
Match a single character present in the list “eE” «[eE]»
Match a single character in the range between “0” and “9” «[0-9]»
Match a single character in the range between “0” and “9” «[0-9]»
Match any single character that is not a line break character «.*»
   Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»


Example file name: qwertys01e23other.txt
# 3  
Old 02-22-2014
hi spacebar. Thanks for your reply
i got a bit more:
Sample Filename: unix.com-doku.S01E01.codec #(folder or file)
i have read myself a bit into awk and got partial success.

First i tried to get the index of my RegEx-Hit:
Code:
awk -v a=$FILE -v b=".[sS][0-9][0-9][eE][0-9][0-9]." 'BEGIN{print match(a,b)+3}'

Result: 17

Next step i include the substr command to cut off the name (incl +3 to the index to get season):
Code:
awk -v a=$FILE -v b=".[sS][0-9][0-9][eE][0-9][0-9]." 'BEGIN{print substr(a,0,match(a,b)+3)}'

Result: unix.com-doku.S01

Not pretty but does his job.
Would be great if someone has a good looking one-liner or something shorter, so i can learn a bit :-)
# 4  
Old 02-22-2014
Instead of using:
Code:
awk -v a=$FILE -v b=".[sS][0-9][0-9][eE][0-9][0-9]." 'BEGIN{print substr(a,0,match(a,b)+3)}'

to get your intermediate directory names, you could try:
Code:
${FILE%[Ee][0-9][0-9].*}

If I understood what you're trying to do correctly, the following shell script seems to do what you want. (I usually use the Korn shell, but this script will work with any shell that performs basic POSIX conforming parameter expansions. It was tested with ksh and bash.)
Code:
#!/bin/ksh
# Set pathname for parent destination directory.
DestDir="${PWD}/sorted"
# Move into source directory (named by 1st parameter; default: ./src)
cd ${1:-src}
# Process list of files containing desired pattern...
ls *.[Ss][0-9][0-9][Ee][0-9][0-9].* | while IFS="" read -r src
do      if [ ! -f "$src" ]
        then continue   # Skip all but regular files.
        fi
        # Extract subdirectory name in destination parent directory from $src:
        MidDir="${src%[Ee][0-9][0-9].*}"
        # Create the destination directory if it doesn't already exist.
        if [ ! -d "$DestDir/$MidDir" ]
        then    mkdir "$DestDir/$MidDir"
        fi
        # Move the source file to its new destination.
        mv "$src" "$DestDir/$MidDir"
done

Obviously, you should verify that the cd. mkdir and mv commands all succeed and this script should exit with a non-zero exit status if any errors were detected.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find all pdf an get make a folder from filename substring

Hi , i need your advice. i will find all *.pdf files and make a folder for every different prefix of file names. for example: test_21424234.pdf new_242342.pdf at the and i will that i create ( if not exits ) a new folder "test" and "new" , afterwards i will move the file in this new... (3 Replies)
Discussion started by: Maxwill
3 Replies

2. Red Hat

Identify the folder is part of which mount point

Dear, I am using Redhat 6.6 . How to identify a given directory is part of which mount point. (2 Replies)
Discussion started by: aneesha
2 Replies

3. Shell Programming and Scripting

Advanced AWK Regexp substring to int & Replace

Hi! I have a difficult problem, to step up a unknown version number in a text file, and save the file. It would be great to run script.sh and the version gets increased. Example the content of the textfile.txt hello version = x bye This include three steps 1. First find the char after... (2 Replies)
Discussion started by: Beachboy72
2 Replies

4. Shell Programming and Scripting

Script to Identify if folder has a file in it

Hi everyone I am new to the forums. I haven't done much linux myself but I have been asked if I can do the following. Write a linux script that needs to scan a certain folder every x amount of minutes and if there is a file in the folder then it needs to call a different script. Is this... (2 Replies)
Discussion started by: Bosbaba
2 Replies

5. Shell Programming and Scripting

Help with parsing mailbox folder list (identify similar folders)

List sample: user/xxx/Archives/2010 user/xxx/BLARG user/xxx/BlArG user/xxx/Burton user/xxx/DAY user/yyy/Trainees/Nutrition interns user/yyy/Trainees/Primary Care user/yyy/Trainees/Psychiatric NP interns user/yyy/Trainees/Psychiatric residents user/yyy/Trainees/Psychology... (4 Replies)
Discussion started by: spacegoose
4 Replies

6. AIX

IBM AIX on IBM Eseries & x series server

Hi, I want to know whether IBM AIX can be installed on the IBM e series and x series server hardware? Thanks & Regards Arun (2 Replies)
Discussion started by: Arun.Kakarla
2 Replies

7. Shell Programming and Scripting

Script to identify logged users & commands executed

Hi All, I am trying to write a script to get the user information & the command executed. I tried something like this : w | sort | awk '{print$5$6$7}' My requirement is to identify the users who execute the same command at same time. I need the user name & the... (2 Replies)
Discussion started by: vijayarajvp
2 Replies

8. Red Hat

SAMBA & Public Folder

Hello folks, I am trying to accomplish the following: 1. Create home folders for each user 2. Create a public folder where all users can access 3. Use Samba as a domain controller. I have successfully completed issue 1. But I can't get the second issue to work. Below is my config file.... (0 Replies)
Discussion started by: behradb
0 Replies

9. Solaris

Solaris & Hitachi identify

Hello, Is there anyway to tell which set of Hitachi array the disks belong to? I'm remotely located so I cannot do the physical check. The possible Hitachi arrays are: AMS1000 and 9570 This is what I see on the format: 2. c2t50060E800475EA02d1 <HITACHI-OPEN-V*9-SUN-5007 cyl 65533 alt 2... (0 Replies)
Discussion started by: kiem
0 Replies
Login or Register to Ask a Question