Insert year in ls -l command


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Insert year in ls -l command
# 1  
Old 01-02-2020
Insert year in ls -l command

Hi All,
Have a file where i stored ls -l command output,
Code:
-rw-r--r--    1 360      600         94255 Jan 01 11:16 file1_2020.csv
-rw-r--r--    1 360      600        114573 Dec 29 11:10 file2_2019.csv
-rw-r--r--    1 360      600         41006 Dec 30 11:09 file3_2019.csv
-rw-r--r--    1 360      600        165923 Dec 31 11:29 file4_2019.csv

Want to extract year from filename and insert in every respective line, output should be:
Code:
-rw-r--r--    1 360      600         94255 Jan 01 11:16 2020 file1_2020.csv
-rw-r--r--    1 360      600        114573 Dec 29 11:10 2019 file2_2019.csv
-rw-r--r--    1 360      600         41006 Dec 30 11:09 2019 file3_2019.csv
-rw-r--r--    1 360      600        165923 Dec 31 11:29 2019 file4_2019.csv

Can this be possible using awk and sed in one line instead of running any for loop.

**I got this output from ftp server, and that is why cannot use ls --fu command to get year. That is why i thought of appending year after getting filenames to local server, If there is any alternative for this kindly let me know
# 2  
Old 01-02-2020
Hello kumarinfa,

I am considering that you have saved output of ls command into a file and then I have written this code.

Code:
awk '{split($NF,array,"[_.]");$NF=array[2] OFS $NF} 1'  Input_file

Output will be as follows.
Code:
-rw-r--r-- 1 360 600 94255 Jan 01 11:16 2020 file1_2020.csv
-rw-r--r-- 1 360 600 114573 Dec 29 11:10 2019 file2_2019.csv
-rw-r--r-- 1 360 600 41006 Dec 30 11:09 2019 file3_2019.csv
-rw-r--r-- 1 360 600 165923 Dec 31 11:29 2019 file4_2019.csv

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 01-02-2020
Try:
Code:
sed 's/[^ ]*_\(....\)\./\1 &/' file

Code:
-rw-r--r--    1 360      600         94255 Jan 01 11:16 2020 file1_2020.csv
-rw-r--r--    1 360      600        114573 Dec 29 11:10 2019 file2_2019.csv
-rw-r--r--    1 360      600         41006 Dec 30 11:09 2019 file3_2019.csv
-rw-r--r--    1 360      600        165923 Dec 31 11:29 2019 file4_2019.csv

# 4  
Old 01-02-2020
@Ravindersingh13

Thank you for your suggestion, Yes i have save my output of ls command in file. and Can you please explain little bit in detail what we are doing in this solution.

Also what if my input is:
Code:
-rw-r--r-- 1 360 600 165923 Dec 31 11:29 12312019 file1_12312019_062449.csv

How can i extract year part in same solution, tried but could not get the expceted.

Thank you again
# 5  
Old 01-02-2020
use time-style=+FORMAT to force a constant time format on ls -l output, +FORMAT uses the format that the date command uses as well.
See the man page for your date command if this is foreign to you.
Example:
Code:
# set time to exactly right  now on the t.lis file
touch t.lis
 ls -l --time-style='+%Y-%m-%d %H:%m' t.lis
-rw-r--r-- 1 Owner None 1055 2020-01-02 16:01 t.lis

# 6  
Old 01-02-2020
Quote:
Originally Posted by kumarinfa
@Ravindersingh13
Thank you for your suggestion, Yes i have save my output of ls command in file. and Can you please explain little bit in detail what we are doing in this solution.
Also what if my input is:
Code:
-rw-r--r-- 1 360 600 165923 Dec 31 11:29 12312019 file1_12312019_062449.csv

How can i extract year part in same solution, tried but could not get the expceted.
Thank you again
Hello kumarinfa,

Following is the complete explanation.

Code:
awk '                               ##starting awk program from here.
{
  split($NF,array,"[_.]")           ##Using split to splitting the last field of current line into an array named array with field separator of underscore and dot.
  $NF=array[2] OFS $NF              ##resetting last field value with 2nd value of array(which was year value) OFS and last field value itself.
}
1                                   ##Mentioning 1 will print edited/non-edited lines here. 
' Input_file                        ##Mentioning Input_file name here.

Thanks,
R. Singh

Last edited by RavinderSingh13; 01-02-2020 at 11:40 PM..
# 7  
Old 01-03-2020
@Jim,

Thanks for your reply, and yes i am well aware about DATE command and its relevant formats, kindly follow my first post carefully as i mentioned that i cannot use any ls options because i am getting file listing from ftp server. Is there any command which can give me desired result directly from ftp while using ls?

TIA

--- Post updated at 07:10 PM ---

Thank you @Ravinder,

I understood very well what you explained. Also can you tell me what if i have to extract year if i get input like this:

Code:
-rw-r--r-- 1 360 600 165923 Dec 31 11:29 12312019 file1_12312019_062449.csv

Here 2019 is not whole word rather part of second field, tried using substr but not able to get the idea that how to nest split and substr function.

TIA
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Command to print previous year in UNIX

hi all, I use date +%Y which gives Current year. Requirement: I want previous year to be printed. Please help me. Note: I tried date +%d/%m/%Y -d "-1 years" which is not working. (10 Replies)
Discussion started by: wasim999
10 Replies

2. UNIX for Dummies Questions & Answers

Unix man command to find out month of the year?

how can i display month of the year i was born with using man command? thanks (2 Replies)
Discussion started by: janetroop95
2 Replies

3. Linux

uptime command output when the server is running more than one year?

What is the uptime command output when the server is running more than one year? My doubt is whether it show in number of days format or number years and number of days format? For example, Assume the server is running 400 days 3 hrs 3 min 3 secs. The output like 400 days 3:3 min or 1 year 5... (3 Replies)
Discussion started by: maruthu
3 Replies

4. UNIX for Advanced & Expert Users

unix command : how to insert text at the cursor location via command line?

Hi, Well my title isn't very clear I think. So to understand my goal: I have a script "test1" #!/bin/bash xvkbd -text blabla with xbindkeys, I bind F5 key in order it runs my test1 script So when I press F5, test1 runs. I'm under Emacs/Vi and I press F5 in order to have "blabla" be... (0 Replies)
Discussion started by: xib.be
0 Replies

5. Emergency UNIX and Linux Support

LAST command with Year

Hi Guys, I'm trying to identify the last logins by all the users in the system in AIX. the last command gives me the output, but there is no year displayed for it . Since there is a duplication of months i mean Apr 2010 and Apr 2009 also its giving me inaccurate data.. Is there a way I can filter... (4 Replies)
Discussion started by: kkeng808
4 Replies

6. UNIX for Dummies Questions & Answers

sed insert command and variable expansion/command substitution

I know this script is crummy, but I was just messing around.. how do I get sed's insert command to allow variable expansion to show the filename? #!/bin/bash filename=`echo $0` /usr/bin/sed '/#include/ { i\ the filename is `$filename` }' $1 exit 0 (8 Replies)
Discussion started by: glev2005
8 Replies

7. UNIX for Dummies Questions & Answers

Last Command not giving year

Hi All, i want the last login details along with year. i tried below command but not giving me the year of last login. last <$Userid> | head -1 i heard that if it is current year then it wont display the year else it will display the year. is it so? if yes then , is there any way of... (1 Reply)
Discussion started by: ani_rvce
1 Replies

8. Shell Programming and Scripting

Last Command not giving year

Hi All, i want the last login details along with year. i tried below command but not giving me the year of last login. last <$Userid> | head -1 i heard that if it is current year then it wont display the year else it will display the year. is it so? if yes then , is there any way of... (1 Reply)
Discussion started by: ani_rvce
1 Replies

9. Shell Programming and Scripting

Printing Year in ls -ltr command

Hi, When retrieving parameters of a file using ls command i need to print the year part . When i do ls -ltr the following output is displayed -rwxrwxrwx 1 d_infd d_infd 1711 Jan 8 2004 wf1.class. Here the year part is not displayed only Jan 8 is displayed. Can any one... (9 Replies)
Discussion started by: ragugct
9 Replies

10. UNIX for Dummies Questions & Answers

listing year in ls command

Hi all .. As per rule i searched the forum i am not able found out ... I want to display the year in when listing the files .. when i use ls -lt it is not displaying files with recent 6 month old .. I know that perderabo has written a script for that if you give that link it will be... (3 Replies)
Discussion started by: arunkumar_mca
3 Replies
Login or Register to Ask a Question