How to rename file name?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to rename file name?
# 8  
Old 02-22-2016
Instead of using date and awk and cut, I'd just use date and shell built-ins:
Code:
mv file "$(printf 'XYP.ZAT%02d.PGPNX.TRDIY' $((($(date +%Y) + 99) % 100)))"

Note that the code you have will print 1 digit years instead of 2 digit years starting in years 01 through 10 in each century. Note also that date +%y would also work with ksh; but would give you a syntax error in years 08 and 09 in each century if you're using bash.
# 9  
Old 02-23-2016
could plz explain code why u using two ((($(date +%Y) + 99) % 100)))" bracket
# 10  
Old 02-23-2016
Quote:
Originally Posted by jagu
could plz explain code why u using two ((($(date +%Y) + 99) % 100)))" bracket
I don't know what you mean about using two bracket. There are no brackets; only parentheses. The command I suggested:
Code:
mv file "$(printf 'XYP.ZAT%02d.PGPNX.TRDIY' $((($(date +%Y) + 99) % 100)))"

uses a command substitution inside double quotes using printf to format the name of the destination file operand for the mv command. That accounts for the "$( at the start of that operand and the )" at the end of that operand. The command being run in that command substitution is a printf command with a single quoted format argument of 'XYP.ZAT%02d.PGPNX.TRDIY' where the text other than the %02d is the constant part of the destination filename you specified and the %02d is a format specifier requesting that a decimal value of two or more digits be printed using a leading 0 if the number to be printed is less than 10. The remaining text:
Code:
$((($(date +%Y) + 99) % 100))

is an arithmetic substitution ($(( expression ))) where the expression being processed is:
Code:
($(date +%Y) + 99) % 100

which adds 99 to the result of another command substitution ($(date +%Y) which invokes the date utility to get the complete current year) and then returns the remainder of dividing that sum by 100. That result will be a one or two digit decimal number in the inclusive range 0 through 99 (which will be the last two digits of the previous year).

Note that when I first started trying to come up with a way to do this, I was using %y instead of %Y as the date utility format specifier (which just returns the last two digits of the current year instead of the entire year) so I added 99 instead of subtracting 1 to avoid getting a negative value for the mod operation in cases where the script might be run in a year ending in 00. Since the script is now using %Y, you could get exactly the same results with:
Code:
mv file "$(printf 'XYP.ZAT%02d.PGPNX.TRDIY' $((($(date +%Y) - 1) % 100)))"

if the 99 is confusing you. And if having the parentheses for the various operations next to each other is confusing to you, you can add spaces separating the operators if it makes it easier for you to read:
Code:
mv file "$(printf 'XYP.ZAT%02d.PGPNX.TRDIY' $(( ( $(date +%Y) - 1 ) % 100)) )"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash to copy file 3 times and rename based on another file

In the below bash I am trying to copy the only text file (always only one) in /home/cmccabe/Desktop/list/QC/metrics.txt and rename each of the 3 text files according to /home/cmccabe/Desktop/test/list.txt using lines 3, 4 ,5. This format (that is list.txt) is always 5 lines. Thank you :). ... (12 Replies)
Discussion started by: cmccabe
12 Replies

2. Shell Programming and Scripting

Rename specific file extension in directory with match to another file in bash

I have a specific set (all ending with .bam) of downloaded files in a directory /home/cmccabe/Desktop/NGS/API/2-15-2016. What I am trying to do is use a match to $2 in name to rename the downloaded files. To make things a more involved the date of the folder is unique and in the header of name... (1 Reply)
Discussion started by: cmccabe
1 Replies

3. UNIX for Dummies Questions & Answers

awk - Rename output file, after processing, same as input file

I have one input file ABC.txt and one output DEF.txt. After the ABC is processed and created output, I want to rename ABC.txt to ABC.orig and DEF to ABC.txt. Currently when I am doing this, it does not process the input file as it cannot read and write to the same file. How can I achieve this? ... (12 Replies)
Discussion started by: High-T
12 Replies

4. UNIX for Dummies Questions & Answers

look for specific values in a file and rename file with value found

Hi, i have a file with some data ..look for some specific value in the file and if found that value rename the file with the value found in the file.. ex.. File.txt 1236 43715825601ANDERSSON, 1236 437158256031963040120060901200609010000000 1236 43715825604123 MCCL AVE UPPER 1236 ... (11 Replies)
Discussion started by: dssyadav
11 Replies

5. UNIX for Dummies Questions & Answers

Rename a file

how to rename a file if I don't know file location ? Can we below command : $ find / | mv file1.txt I am not sure........can any1 help me out ? Thanks, Tushar Joshi:mad: (1 Reply)
Discussion started by: tusharjoshi
1 Replies

6. Shell Programming and Scripting

[ask]rename file

dear all, i have case with this: i have file 20110601.txt so i want to auto rename this file like this 20110601_20110602.txt actual this rename will create if 20110601 came in date 20110602(date from system unix) so this will be using #!/bin/bash folder='/home' desti='/home/desti'... (2 Replies)
Discussion started by: zvtral
2 Replies

7. Shell Programming and Scripting

A script that will move a file to a directory with the same name and then rename that file

Hello all. I am new to this forum (and somewhat new to UNIX / LINUX - I started using ubuntu 1 year ago).:b: I have the following problem that I have not been able to figure out how to take care of and I was wondering if anyone could help me out.:confused: I have all of my music stored in... (7 Replies)
Discussion started by: marcozd
7 Replies

8. UNIX for Dummies Questions & Answers

Rename file based on first 3 characters of data in file

I'm looking to determine if I can use a grep command to read file and rename the file based on the first 3 characters of the data in the file. An example is: Read FileA If the first 3 positions of the data in the file are "ITP", then rename the file as FileA_ITP, else if the first 3... (3 Replies)
Discussion started by: jchappel
3 Replies

9. Shell Programming and Scripting

Rename a file name

Hi, I am getting a file name from a remote server thru ftp and storing this filename in a variable. I am doing this in ftp mode. for ex: the filename is like emp_010208. This file name has to be changed to emp. Can you please let me know how we can do this while we are in ftp mode. thanks,... (0 Replies)
Discussion started by: Aswarth
0 Replies

10. UNIX for Dummies Questions & Answers

Help with multiple file rename - change case of part of file name

Hi there, I hope someone can help me with this problem : I have a directory (/var/www/file/imgprofil) which contains about 10000 JPG files. They have a naming convention thus : prefix-date-key-suffix.jpg they all have the prefix p-20050608- then AAAA is a 4 letter code the suffix is... (7 Replies)
Discussion started by: steve7
7 Replies
Login or Register to Ask a Question