Sponsored Content
Full Discussion: Batch rename recursively
Top Forums UNIX for Dummies Questions & Answers Batch rename recursively Post 302329113 by ghostdog74 on Friday 26th of June 2009 01:34:25 AM
Old 06-26-2009
Code:
awk 'BEGIN{
    q="\047"
    path="/path/to/search"
    cmd="find "path" -type f -name \"*_*.jpg\""
    while(( cmd|getline f )>0){
        m=split(f,file,"/")
        gsub(/_/,"-",file[m])
        newfilename = join(file,1,m,"/")            
        mv = "mv "q f q" "q newfilename q
        print mv
        #system(mv) #uncomment to use                     
        close(mv)
    }
    close(cmd)
}
function join(array, start, end, sep,    result, i)
{
         if (sep == "") sep = " "
         else if (sep == SUBSEP) sep = ""
         result = array[start]
         for (i = start + 1; i <= end; i++)
             result = result sep array[i]
         return result
}'


Last edited by ghostdog74; 06-26-2009 at 03:17 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

rename in batch

example test1 will have m1234567.12a I would like to rename in batch but I don't Please help me on this. cd /a1/a2/a3 test1=$(basename /a1/a2/a3/*.*) >> /tmp/t echo $test1 echo "Extracting 8 th position" >> /tmp/t2 awk '{print substr($1,8,1); }' $test1 >> /tmp/t3 echo "extraction ... (3 Replies)
Discussion started by: kathy18
3 Replies

2. UNIX for Advanced & Expert Users

rename the file in batch

In my dir there are files like a.xml b.xml abnc.xml 12.abc.xml 12.anc.sfoioi.xml I need to remove .xml from all the files Is there any direct way without using any for/do loop Right now i am using for file in * do ... (7 Replies)
Discussion started by: reldb
7 Replies

3. Shell Programming and Scripting

Rename files recursively

hi I have files named 123_234_aaa.jpg 234_231_345.jpg and i wish to rename these files to aaa.jpg and 345.jpg. i.e inital number,_,next number should be removed form the file name. Please let me know how can i do it. (2 Replies)
Discussion started by: vasuarjula
2 Replies

4. Shell Programming and Scripting

Batch rename files after internal search pattern

Hello all I am trying to do a script that would allow me to mass rename files after a grep search within them. They are XML files and the pattern I would like to append to the file name is easy to find (e.g. <filename>foo</filename>), but I can't for the life of me find out how to do it and... (2 Replies)
Discussion started by: aavv
2 Replies

5. Shell Programming and Scripting

try to batch rename using sed (if this is best)

hi gooday I need some help with a rename I am attempting. I'd like to rename a bunch of files in a folder example list.dat.old to list_N.dat query.dat.old to query_N.dat note the two periods in (.dat.old) to become _N.dat I tried using sed like this ls *.dat.old | sed... (3 Replies)
Discussion started by: johnstrong
3 Replies

6. Shell Programming and Scripting

Recursively rename some files

Hello, I have one directory with 3 level sub-directories, and about houndard files under those directories. I need a shell script to rename all patern mateched directories and files. For example: the patern is AA in the directory or file name. Orignal directory:... (2 Replies)
Discussion started by: mail4mz
2 Replies

7. Shell Programming and Scripting

Recursively rename directories

I have this directory tree under /apps/myapp/data: imageshack.us/photo/my-images/703/foldersc.png How to recursively rename ONLY directories with 5 digits (00000, 00100, 00200,..., 00007, 00107,...)? I want to add to their name two more zeros: Before: 00107 After: 0000107 Thanks in... (2 Replies)
Discussion started by: Susan_45
2 Replies

8. Shell Programming and Scripting

Batch rename files that do not match pattern

Hi all, I do not have programming experience and mostly use one-liner or sometimes more to get the job done. I am having problem to batch rename the files that do not match a particular pattern. Sample file-names from directory: Meeting_Packages.pdf 13_textfile0 19_textfile0 ... (3 Replies)
Discussion started by: atulkakrana
3 Replies

9. Shell Programming and Scripting

Batch Script To Unzip and Rename File

Hello All, I need help in writing a batch script. I have 100 zip files in a folder. Each zip file has a unique name starting with XYZ_12345.zip Each zip file contains single csv file I would like to batch extract the files and also rename the extracted csv as per the original zip name... (6 Replies)
Discussion started by: rajlakshmi
6 Replies

10. UNIX for Dummies Questions & Answers

Find and rename file recursively

Hi, I have a directory which contains multiple files with .txt extension, i want to rename all these file to .bak extension using find command, this is what i've tried, please help me to correct this : find /home/application/test -name '*.txt' -exec rename 's/txt/bak/' {} \; seems to... (8 Replies)
Discussion started by: mukulverma2408
8 Replies
rename(2)							System Calls Manual							 rename(2)

Name
       rename - change the name of a file

Syntax
       rename(from, to)
       char *from, *to;

Description
       The system call causes the link named from to be renamed to.  If to exists, then it is first removed.  Both from and to must be of the same
       type (that is, both directories or both nondirectories) and must reside on the same file system.

       The system call guarantees that an instance of to will always exist, even if the system should crash in the middle of the operation.

Return Values
       A zero (0) value is returned if the operation succeeds. Otherwise returns -1, and the global variable errno indicates the  reason  for  the
       failure.

Restrictions
       The system can deadlock if a loop in the file system graph is present.and two processes issue the call at the same time.  For example, sup-
       pose a directory, contains a file, Suppose that file is hard-linked to a directory, and the directory contains a file, If is hard-linked to
       a loop exists.  Now suppose one process issues the following call:
       rename (dirname/filename secondir/secondfile)
       At the same time, another process issues the following call:
       rename (secondir/secondfile dirname/filename)
       In this case, the system can deadlock.  The system administrator should replace hard links to directories with symbolic links.

Diagnostics
       The system call fails and neither of the argument files are affected under the following conditions:

       [ENOTDIR]      A component of either path prefix is not a directory.

       [ENOENT]       A component of the from path does not exist, or a path prefix of to does not exist.

       [ENOENT]       Either from or to points to an empty string and the environment defined is POSIX or SYSTEM_FIVE.

       [EACCES]       A component of either path prefix denies search permission.

       [EPERM]	      The  to  file exists, the directory containing from is marked sticky, and neither the containing directory nor the to direc-
		      tory is owned by the effective user ID.

       [EPERM]	      The directory containing from is marked sticky, and neither the containing directory nor the from directory is owned by  the
		      effective user ID.

       [EXDEV]	      The  link named by to and the file named by from are on different logical devices (file systems).  Note that this error code
		      is not returned if the implementation permits cross-device links.

       [EACCES]       The requested link requires writing in a directory with a mode that denies write permission.

       [EROFS]	      The requested link requires writing in a directory on a read-only file system.

       [EFAULT]       The path points outside the process's allocated address space.

       [EINVAL]       The from is a parent directory of to, or an attempt is made to rename dot (.) or dot-dot (..).

       [ENAMETOOLONG] A component of either pathname exceeded 255 characters, or the entire length of either pathname exceeded 1023 characters.

       [ELOOP]	      Too many symbolic links were encountered in translating either pathname.

       [ENOTDIR]      The from is a directory, but to is not a directory.

       [EISDIR]       The to is a directory, but from is not a directory.

       [ENOSPC]       The directory in which the entry for the new name is being placed cannot be extended, because there is no space left on  the
		      file system containing the directory.

       [EDQUOT]       The  directory  in  which  the  entry  for the new name is being placed cannot be extended, because the user's quota of disk
		      blocks on the file system containing the directory has been exhausted.

       [EIO]	      An I/O error occurred while making or updating a directory entry.

       [ENOTEMPTY]    The to is a directory and is not empty.

       [EBUSY]	      The directory named by from or to is a mount point.

See Also
       open(2)

																	 rename(2)
All times are GMT -4. The time now is 09:48 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy