Sponsored Content
Top Forums Shell Programming and Scripting bash script to rename multiple directories Post 302374164 by garethsays on Monday 23rd of November 2009 03:58:11 PM
Old 11-23-2009
Done

Anyone interested here is my script.

#!/bin/bash
cd ~/tst2
## set variable year_dir as first year
year_dir=2007

## checks dir exists and is a directory and into FIRST LOOP
while [ -d "$year_dir" ] && [ "$year_dir" -le 2010 ]
do
cd $year_dir
YEAR=`basename $PWD` ;echo "YEAR IS "$YEAR
## list all directories and into SECOND LOOP
for month_dir in `ls -d *`
do
cd $month_dir
MONTH=`basename $PWD | awk '{printf "%02i",substr($0,length($0)-1)}'` ;echo "MONTH IS "$MONTH
## lists all single char directories,i.e. 1 to 9 and into THIRD LOOP
for day_dir_1char in `ls -d [1-9]`
do
echo "mv "$day_dir_1char" 0"$day_dir_1char
mv $day_dir_1char 0$day_dir_1char
done
## exit THIRD LOOP
## list all two char dirs and rename all days (all in 2 char format). in to FOURTH LOOP
for day_dir_2char in `ls -d [0-3][0-9]`
do
echo "mv $day_dir_2char to "$YEAR"_"$MONTH"_"$day_dir_2char
mv $day_dir_2char $YEAR\_$MONTH\_$day_dir_2char
done
## exit FOUTH LOOP
cd ..
echo "mv $month_dir to "$YEAR"_"$MONTH
mv $month_dir $YEAR\_$MONTH
# echo "cmv "$month_dir $YEAR"_"$MONTH
# DAY=`basename $PWD`; echo "DAY IS "$DAY
done
let year_dir=$year_dir+1
cd ..
done
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Hello - new here - bash script - need to rename and zip files.

I'm working on a project that basically unzips three zip files. When these unzip they create about 70+ directories with subdirectories of year/month with about 3 to 9 pdf files in each directory. Basically, I'm needing to figure out a way to zip these pdf files up. for instance the script... (1 Reply)
Discussion started by: Aixia
1 Replies

2. Shell Programming and Scripting

bash script to rename in mass

Basically, I have a huge amount of files (ripped audiobooks) that all have the same garbage in their filenames. I'm wondering how to go about writing a bash script to mass rename them. Example filenames as they stand now: The First CD - 1x01 - Title 1.mp3 The First CD - 1x02 - Title 2.mp3... (4 Replies)
Discussion started by: audiophile
4 Replies

3. 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

4. UNIX for Dummies Questions & Answers

Bash script to rename files in a directory

Dear friends, I have created a script to rename all files in a directory by appending the file name with username (who created the file), the date it was created. For example, "apple.doc" should be renamed to "johnFeb23apple.doc" where "john" is the owner and "Feb23" is file created date. It... (4 Replies)
Discussion started by: djsnifer
4 Replies

5. UNIX for Dummies Questions & Answers

Script to rename directories

I am trying to create a script that will search for a directory named bob, and then rename that directory to peter. I do not want the directory path to change. so /folders/bob would become /folders/peter It seems to be renaming the bob folder to peter correctly, but the peter folder ends... (2 Replies)
Discussion started by: gumby456m
2 Replies

6. Shell Programming and Scripting

Need bash script to ping the servers and rename the output file each time the script is ran

HI, I have a file serverlist in that all host names are placed. i have written a small script #./testping #! /bin/bash for i in `cat serverlist` do ping $i >> output.txt done so now it creates a file output.txt till here fine.. now each time i run this script the output file... (4 Replies)
Discussion started by: madhudeva
4 Replies

7. UNIX for Dummies Questions & Answers

Rename multiple files in shell bash, changing elements order.

Hi, I want to rename several files like this: example: A0805120817.BHN A0805120818.BHN ..... to: 20120817.0805.N 20120818.0805.N ...... How can i do this via terminal or in shell bash script ? thanks, (6 Replies)
Discussion started by: pintolcv
6 Replies

8. Shell Programming and Scripting

Merge values from multiple directories into one file in awk or bash

I am trying to merge or combine all $1 values in validation.txt from multiple directories into one new file and output it here tab-delimited:/home/cmccabe/Desktop/20x/total/total.txt. Each $2 value and the header would then be a new field in total.txt. I am not sure how to go about this as cat is... (2 Replies)
Discussion started by: cmccabe
2 Replies

9. Shell Programming and Scripting

Rename files from multiple directories along with directory indicator

Hi, Friends, i have a requirement where i need to rename my files residing in multiple sub directories and move them to one different directory along with some kind of directory indicator. For eg: test--is my parent directory and it has many files such as a1.txt a2.txt a3.txt ... (5 Replies)
Discussion started by: gnnsprapa
5 Replies
TOUCH(1)						    BSD General Commands Manual 						  TOUCH(1)

NAME
touch -- change file access and modification times SYNOPSIS
touch [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ... DESCRIPTION
The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions. The following options are available: -a Change the access time of the file. The modification time of the file is not changed unless the -m flag is also specified. -c Do not create the file if it does not exist. The touch utility does not treat this as an error. No error messages are displayed and the exit value is not affected. -f Attempt to force the update, even if the file permissions do not currently permit it. -h If the file is a symbolic link, change the times of the link itself rather than the file that the link points to. Note that -h implies -c and thus will not create any new files. -m Change the modification time of the file. The access time of the file is not changed unless the -a flag is also specified. -r Use the access and modifications times from the specified file instead of the current time of day. -t Change the access and modification times to the specified time. The argument should be in the form ``[[CC]YY]MMDDhhmm[.SS]'' where each pair of letters represents the following: CC The first two digits of the year (the century). YY The second two digits of the year. If ``YY'' is specified, but ``CC'' is not, a value for ``YY'' between 69 and 99 results in a ``CC'' value of 19. Otherwise, a ``CC'' value of 20 is used. MM The month of the year, from 1 to 12. DD the day of the month, from 1 to 31. hh The hour of the day, from 0 to 23. mm The minute of the hour, from 0 to 59. SS The second of the minute, from 0 to 61. If the ``CC'' and ``YY'' letter pairs are not specified, the values default to the current year. If the ``SS'' letter pair is not specified, the value defaults to 0. DIAGNOSTICS
The touch utility exits 0 on success, and >0 if an error occurs. SEE ALSO
utimes(2) COMPATIBILITY
The obsolescent form of touch, where a time format is specified as the first argument, is supported. When no -r or -t option is specified, there are at least two arguments, and the first argument is a string of digits either eight or ten characters in length, the first argument is interpreted as a time specification of the form ``MMDDhhmm[YY]''. The ``MM'', ``DD'', ``hh'' and ``mm'' letter pairs are treated as their counterparts specified to the -t option. If the ``YY'' letter pair is in the range 39 to 99, the year is set to 1939 to 1999, otherwise, the year is set in the 21st century. HISTORY
A touch utility appeared in Version 7 AT&T UNIX. STANDARDS
The touch utility is expected to be a superset of the IEEE Std 1003.2 (``POSIX.2'') specification. BSD
April 28, 1995 BSD
All times are GMT -4. The time now is 04:48 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy