Visit Our UNIX and Linux User Community


Move files using wildcards ???


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Move files using wildcards ???
# 1  
Old 12-20-2001
Data Move files using wildcards ???

Hi all,

Would like to rename all files using wildcards - if at all possible!

As an example I have the following files:
Nov01_df
Nov02_df
Nov03_df
......
Nov28_df
Nov29_df
Nov30_df

I'd like to have these renamed as "df??" where ?? is the number from the original file name.

Any suggestions??
# 2  
Old 12-20-2001
The only practical way to do this is in a loop in a shell...

for fname in Nov*_df
do
# in here you build the new name
# then rename the $fname to the new name
done

...I left a "little" work for you to try Smilie
# 3  
Old 12-20-2001
rwb1959,

Thanks heaps for the reply.

The build should be:

Nname="df"`echo $fname | cut -c4-5`
rename $fname Nname


Is this correct?
I'm preparing this at home before I go back to workon Monday.

Again, many thanks.

BTW - Why is it that mv is unable to handle wildcards in a similar fashion to: mv Nov??_df df??.
# 4  
Old 12-21-2001
That looks OK, except that "rename" should be "mv" (slipping back into DOS mode, are you?)

The mv will clobber any existing files in the way, such as an older df01. If you want protection from this, then use mv -i, or your loop could check for existence before the mv.

Also, if you are going to cut exactly two columns, you should drive off of Nov??_df instead of Nov*_df. If you use asterisk, and you happen to have:

Nov01_df
Nov01b_df

you would rename the first entry to df01, then you would rename the second entry to df01 also, thus overlaying the first entry. Using Nov??_df will be consistent with cutting two characters.

Or if you do want to process Nov*_df files, you could use the following for your Nname assignment:

Nname=`expr $x : "Nov\(.*\)_df"`df

And an attempt at answering your BTW:

mv is simply not designed to rename a series of files into a series of new filenames. And I believe that the filename pattern matching expansion is done by the shell before mv ever sees it. Therefore:

mv Nov??_df mydir

would get changed to

mv Nov01_df Nov02_df Nov03_df mydir

before mv sees it. The mv command never gets to see the pre-expanded command.
Jimbo
# 5  
Old 12-21-2001
I think Jimbo answered your question about
mv and wild cards. In a nutshell, if the
file name "Nov*df" expands into more than one
file name, you could not logically move it
to a single target file name. Only a directory
name would be valid in this case.

Also, the line...
rename $fname Nname

...should be...
mv $fname $Nname

...don't forget that leading "$" when using
variables in your script (which of course is
not used in variable assignment).
# 6  
Old 12-25-2001
Well, on some systems (at least Linux systems), there IS a "rename" command. It is MUCH more portable to use "mv", however...

man rename #on a Slackware system:
Code:
RENAME(1)           Linux Programmer's Manual           RENAME(1)

NAME
       rename - Rename files

SYNOPSIS
       rename from to file...

DESCRIPTION
       rename  will rename the specified files by replacing the first occurrence of
       from in their name by to.

       For example, given the files foo1, ..., foo9, foo10, ..., foo278,  the  com-
       mands

              rename foo foo0 foo?
              rename foo foo0 foo??

       will turn them into foo001, ..., foo009, foo010, ..., foo278.

       And
              rename .htm .html *.htm

       will fix the extension of your html files.

SEE ALSO
       mv(1)

                          1 Januari 2000                        1

 

Previous Thread | Next Thread
Test Your Knowledge in Computers #688
Difficulty: Medium
The first computer to implement architectures enabling reverse Polish notation (RPN) was the Apple I computer.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Move files with a certain suffix based on how many files are in another folder

Hello, First time poster. I am looking for a way to script or program the process of moving files from one folder to another, automatically, based on the count of files in the destination folder. I was thinking a shell script would work, but am open to the suggestions of the experts... (6 Replies)
Discussion started by: comtech
6 Replies

2. Shell Programming and Scripting

SBATCH trinity for multiple files and rename/move the output files

Hey guys, I have wrote the following script to apply a module named "trinity" on my files. (it takes two input files and spit a trinity.fasta as output) #!/bin/bash -l #SBATCH -p node #SBATCH -A <projectID> #SBATCH -n 16 #SBATCH -t 7-00:00:00 #SBATCH --mem=128GB #SBATCH --mail-type=ALL... (1 Reply)
Discussion started by: @man
1 Replies

3. Shell Programming and Scripting

Move all files except sys date (today) files in Solaris 10

I want to move all files from one directory to another directory excluding today (sysdate files) on daily basis. file name is in pattern file_2013031801, file_2013031802 etc (2 Replies)
Discussion started by: khattak
2 Replies

4. UNIX for Dummies Questions & Answers

copying files with wildcards

Hello, I am attempting to copy a series of files using a wildcard into a new subdirectory. however, I am clearly doing something wrong as it is not working. I want to copy all files in the directory that start with the letters kl but have other letters after this initial two letters into another... (7 Replies)
Discussion started by: goldenone
7 Replies

5. Shell Programming and Scripting

Recursively move directories along with files/specific files

I would like to transfer all files ending with .log from /tmp and to /tmp/archive (using find ) The directory structure looks like :- /tmp a.log b.log c.log /abcd d.log e.log When I tried the following command , it movies all the log files... (8 Replies)
Discussion started by: frintocf
8 Replies

6. UNIX for Dummies Questions & Answers

Move same files and issue ls -al command on remaining files

I know I can use an ls -l junk1 command to get a listing of all files in the directory junk1, but I was wondering how I'd go about going through the files in junk1 in a for-in loop and issuing the ls -l command on them one by one. This is what I have so far: for file in $(ls -a $1) do ls... (1 Reply)
Discussion started by: Trinimini
1 Replies

7. Shell Programming and Scripting

Perl, open multiple files with wildcards

I have a question regarding Perl scripting. If I want to say open files that all look like this and assign them to a filehandle and then assign the filehandle to a variable, how do I do this? The file names are strand1.fa.gz.tmp strand2.fa.gz.tmp strand3.fa.gz.tmp strand4.fa.gz.tmp ...... (6 Replies)
Discussion started by: japaneseguitars
6 Replies

8. Shell Programming and Scripting

rename multiple files with wildcards

Hi All I am having hundred over file in the below pattern. AA050101.INI BB090101.INI . . ZX980101.INI Need to rename these files with an extension .bak AA050101.INI.bak BB090101.INI.bak . . ZX980101.INI.bak (5 Replies)
Discussion started by: karthikn7974
5 Replies

9. Shell Programming and Scripting

How to check files and move the results to differents files?

Hi, I am a newbie to shell scripting. here is my objective: 1)The shell program should take 2 parameters - ie-> DestinationFolder, WebFolder 2)Destination folder contains few files that has to has be verified and deleted. 3)WebFolder is a folder containing a list of master files 4)It... (1 Reply)
Discussion started by: sandhyagupta
1 Replies

10. Shell Programming and Scripting

Using cat to combine files using wildcards

How do I use cat (presumably with a sh script) to combine all the files in a directory without listing them individually. Thank you for your patience with this very elementary question.:) (3 Replies)
Discussion started by: Enobarbus37
3 Replies

Featured Tech Videos