Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 07-13-2018 08:06 AM
How to sort the filename in shell.
My files looks like
abcd_2_20180703
abcd_4_20180703
abcd_5_20180703
abcd_1_20180703
abcd_3_20180703
abcd_6_20180703
And i expect after the sorting
abcd_1_20180703
abcd_2_20180703
abcd_3_20180703
abcd_5_20180703
..
Please help me sort the files. TIA
Created 07-15-2018 07:53 AM
Try sort with delimiter
# ls -1 | sort -t '_' -nk3 # ls -1 | sort -t '_' -nk3 abcd_1_20180703 abcd_2_20180703 abcd_3_20180703 abcd_4_20180703 abcd_5_20180703 abcd_6_20180703 abcd_1_20180704 abcd_2_20180704 abcd_3_20180704 abcd_4_20180704 abcd_5_20180704 abcd_6_20180704 #cat test.out | sort -t '_' -nk3
Created 07-13-2018 10:01 AM
You can simply use "sort" command.
[root@node1 ~]# cat /tmp/a.txt abcd_2_20180703 abcd_4_20180703 abcd_5_20180703 abcd_1_20180703 abcd_3_20180703 abcd_6_20180703 [root@node1 ~]# sort /tmp/a.txt abcd_1_20180703 abcd_2_20180703 abcd_3_20180703 abcd_4_20180703 abcd_5_20180703 abcd_6_20180703
Let me know if this helps.
Created 07-15-2018 07:01 AM
Thanks for your reply. the above sort will give correct output if the directory have only one day files.
if the directory have 20180704 files.
it sorted output like
abcd_1_20180703
abcd_1_20180704
abcd_2_20180703
abcd_2_20180704
abcd_3_20180703
abcd_3_20180704
abcd_4_20180703
abcd_4_20180704
abcd_5_20180703
abcd_5_20180704
abcd_6_20180703
abcd_6_20180704
But i expect
abcd_1_20180703
abcd_2_20180703
abcd_3_20180703
abcd_4_20180703
abcd_5_20180703
abcd_6_20180703
abcd_1_20180704
abcd_2_20180704
abcd_3_20180704
abcd_4_20180704
abcd_5_20180704
abcd_6_20180704
Any idea?
Created 07-15-2018 09:34 AM
@Sundar Lakshmanan "sort" was for the requirement this is mentioned in the question details. You can use the command which @rguruvannagari has mentioned in the above comment to sort with the date (3rd column).
Created 07-15-2018 07:53 AM
Try sort with delimiter
# ls -1 | sort -t '_' -nk3 # ls -1 | sort -t '_' -nk3 abcd_1_20180703 abcd_2_20180703 abcd_3_20180703 abcd_4_20180703 abcd_5_20180703 abcd_6_20180703 abcd_1_20180704 abcd_2_20180704 abcd_3_20180704 abcd_4_20180704 abcd_5_20180704 abcd_6_20180704 #cat test.out | sort -t '_' -nk3
Created 07-15-2018 01:56 PM
Thanks @ Sandeep Nemuri @ rguruvannagari works fine