Rename folder


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rename folder
# 8  
Old 09-15-2013
hi,
If your OS is Linux, you can try:
Code:
#!/bin/bash
find . -type d -name "p*" | while  read i
do
        read d1 d2 < <(echo "$i" | sed 's/ //g;s/.*(\([0-9.]\+\)-\([0-9.]\+\))/\1 \2/;s/\./:/g')
        m1=$(date --date="$d1 10 minutes ago" "+%H.%M")
        m2=$(date --date="$d2 10 minutes ago" "+%H.%M")
        d1=${d1/:/.}
        d2=${d2/:/.}
        j=$(echo "$i" | sed 's/\(.*( *\)'$d1'\( *- *\)'$d2'\( *)\)/\1'$m1'\2'$m2'\3/')
        echo mv "$i" "$j"
done

PS: This script no execute mv but print the command.

Regards.
This User Gave Thanks to disedorgue For This Post:
# 9  
Old 09-15-2013
If you don't have GNU date available, this might work
Code:
#!/bin/bash
find . -type d -name "p*" | 
awk    '    {printf "%s \"%s\" ", "mv", $0
             $2 = sprintf ("%4.2f", $2-(($2==int($2))?0.5:0.1))
             $4 = sprintf ("%4.2f", $4-(($4==int($4))?0.5:0.1))
             printf "\"%s\"\n", $0
            }
       ' > tmpscript.sh
. ./tmpscript.sh
rm tmpscript.sh


Last edited by RudiC; 09-15-2013 at 04:38 PM..
This User Gave Thanks to RudiC For This Post:
# 10  
Old 09-15-2013
Code:
 > tmpscript.sh
. ./tmpscript.sh
rm tmpscript.sh

is about the same as
Code:
 | sh

Verbose dry-run:
Code:
 | sh -nv

These 2 Users Gave Thanks to MadeInGermany For This Post:
# 11  
Old 09-15-2013
Absolutely. Didn't think of that!
This User Gave Thanks to RudiC For This Post:
# 12  
Old 09-15-2013
@Rudic: Maybe, it's not important, but not work with (example) p1( 00 - 02.05 )

Regards.
This User Gave Thanks to disedorgue For This Post:
# 13  
Old 09-16-2013
Quote:
Originally Posted by disedorgue
hi,
If your OS is Linux, you can try:
Code:
#!/bin/bash
find . -type d -name "p*" | while  read i
do
        read d1 d2 < <(echo "$i" | sed 's/ //g;s/.*(\([0-9.]\+\)-\([0-9.]\+\))/\1 \2/;s/\./:/g')
        m1=$(date --date="$d1 10 minutes ago" "+%H.%M")
        m2=$(date --date="$d2 10 minutes ago" "+%H.%M")
        d1=${d1/:/.}
        d2=${d2/:/.}
        j=$(echo "$i" | sed 's/\(.*( *\)'$d1'\( *- *\)'$d2'\( *)\)/\1'$m1'\2'$m2'\3/')
        echo mv "$i" "$j"
done

PS: This script no execute mv but print the command.

Regards.
awesome and brilliant . thx alot man .
could you explain a bit about i sed in your script i know what they do bu t i want to know about g;s \2/ and '\3/' .g;s/.*(\([0-9.]\+\)

Code:
sed 's/ //g;s/.*(\([0-9.]\+\)-\([0-9.]\+\))/\1 \2/;s/\./:/g'

and
Code:
sed 's/\(.*( *\)'$d1'\( *- *\)'$d2'\( *)\)/\1'$m1'\2'$m2'\3/'

---------- Post updated 09-16-13 at 01:49 AM ---------- Previous update was 09-15-13 at 10:34 PM ----------

i have a another problem with this kind of directories

Code:
P3 ( 9 - 10 ) = 111
P2 ( 13 - 11 ) = 112
P3 ( 4 - 8 ) = 114

script does not work for this kind of folder .

Last edited by Scott; 09-16-2013 at 05:04 AM.. Reason: Please use code tags...
# 14  
Old 09-16-2013
Ok,
In first time, the script should work fine if you replace:
Code:
sed 's/ //g;s/.*(\([0-9.]\+\)-\([0-9.]\+\))/\1 \2/;s/\./:/g'

by
Code:
sed 's/ //g;s/.*(\([0-9.]\+\)-\([0-9.]\+\)).*/\1 \2/;s/\./:/g'

Explanation:
g ==> global, so with command s, the replace is global instead of only first occurence.
\(....\) => catch arguments and \1 reference argument 1,\2 argument 2,...
[0-9] => number 0 to 9
\+ => 1 or more the left character class so [0-9]\+ ==> 1 number or more number.

Regards.
This User Gave Thanks to disedorgue For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to rename all files and folder containing underscore?

I want to rename all files and folder containing underscore in name and replace underscore with hyphen. Currently I am using following code, rename '_' '-' */*/* It was working but now it is showing me "Argument list too long" Please help! (2 Replies)
Discussion started by: opticalpigion
2 Replies

2. UNIX for Dummies Questions & Answers

looping through files, doing something, and rename in new folder

Hi, I'm really new at this but have several hundred files that i need to do something with and save with a new name. The files are 26 columns wide. I want to select some for renaming. I've figured out what to do to each file ("file-1.CSV"| grep -v "=" | cut -f 1-4,9,14,15,18,19,20,21,22,24,26... (2 Replies)
Discussion started by: bob101
2 Replies

3. Shell Programming and Scripting

sed to rename files in a folder - please help with script

Hello, I am new to shell scripting and stuck on renaming files in a folder. The files have the format chp01_00001.wav chp01_00002.wav .... chp02_00001.wav chp02_00002.wav .... but I want them to have the following names: chp_bloomy_00001.wav chp_bloomy_00002.wav chp_bloomy_00003.wav... (8 Replies)
Discussion started by: Bloomy
8 Replies

4. UNIX for Dummies Questions & Answers

Bash script to rename all files within a folder...

Hi. I don't have any experience with making scripts in bash. I need a simple script to rename all files in a folder to the format file1.avi, file2.avi, file3.avi, and so on..... Please note that the original files have different filenames and different extensions. But they all need to be... (2 Replies)
Discussion started by: dranzer
2 Replies

5. UNIX for Dummies Questions & Answers

Using Vim or Ex to rename all files in a folder

Is there a way to use Vim or Ex to rename all files in a folder? For example if i have a folder with Apples1.txt, Apples2.txt, Apples3.txt, could I rename all files so they are Oranges1.txt, Oranges2.txt, Oranges3.txt ? I know with :bufdo %s/apples/oranges/g|update you can do this for inside... (5 Replies)
Discussion started by: VimNewUser
5 Replies

6. UNIX for Advanced & Expert Users

Unix Command to rename a file in a zipped folder

Hi, I am into automation work. Is there any UNIX command to rename a file in a zipped folder, without unzipping it..??? Thanks in advance.. (1 Reply)
Discussion started by: Victoria.Sam
1 Replies

7. Shell Programming and Scripting

Copy files from folder and rename them

hello, I need to build a shell script that receives the folder to copy by parameter and copy all files except thumb.db to another folder and rename them like, file.jpg renamed to file_bb1.jpg. can someone help me Thanks (4 Replies)
Discussion started by: zeker
4 Replies

8. Shell Programming and Scripting

Rename folder based on containing XML file

Hi everyone. I'm in need of a solution where i need to rename a folder to a name that's inside an XML file in that folder. OS is Ubuntu 9.10 with Gnome. I've tried using grep, sed and xpath, but can't seem to find a solution. This is the simplified folder structure: FOLDER-NAME -... (4 Replies)
Discussion started by: CoolCow
4 Replies

9. Shell Programming and Scripting

rename all the files in a folder..

Hi Guys, I have 5000 files in a folder. all are .DAT files. I want to rename them as .TXT files. I tried the following command. mv *.DAT *. TXT But it is throwing an error. Can you please tell me what am i doing wrong. Thanks & Regards, Magesh. (11 Replies)
Discussion started by: mac4rfree
11 Replies

10. UNIX for Dummies Questions & Answers

rename files in a folder

i have a folder that contains 100's of files: abc, bca, def, ghi.... i want to rename abc with 1, bca with 2, def with 3, ghi with 4 and so on. my way, i create a file.txt with contents: 1 2 3 4 i use while loop to rename my files. without using file.txt, i just want to rename abc with... (4 Replies)
Discussion started by: tjmannonline
4 Replies
Login or Register to Ask a Question