当前位置: 技术问答>linux和unix
请问linux下如何把带时间戳的文件名改名?
来源: 互联网 发布时间:2017-02-03
本文导语: 请问在Linux一个目录下有几个带时间戳的文件名,请问如何可以取到最新的一个文件名把改成另一个名字。 如 test_20120205_1230.txt test_20120210_0130.txt 后一个文件较新,最后是要取到test_20120210_0130.txt文件把他...
请问在Linux一个目录下有几个带时间戳的文件名,请问如何可以取到最新的一个文件名把改成另一个名字。
如 test_20120205_1230.txt
test_20120210_0130.txt
后一个文件较新,最后是要取到test_20120210_0130.txt文件把他改名成test_20120210_0130.dat
谢谢
如 test_20120205_1230.txt
test_20120210_0130.txt
后一个文件较新,最后是要取到test_20120210_0130.txt文件把他改名成test_20120210_0130.dat
谢谢
|
这样呢?
ls -tr | tail -1 | awk '{b=$0;sub(".txt", ".dat",b);print "mv",$0,b}' | sh
ls -tr | tail -1 | awk '{b=$0;sub(".txt", ".dat",b);print "mv",$0,b}' | sh
|
ls | sort -n | tail -n 1 | rename "s/.txt/.dat/"
这样在我的机器上是可以的。怎么感觉我们的机器差别很大。U 11.10
这样在我的机器上是可以的。怎么感觉我们的机器差别很大。U 11.10
|
1.先按照原始文件名的第二,三个部分排序:
ll *.txt | sort -t'_' -k2,3 #把文件名用'_'分隔成3部分,以第2,3部分排序
2.取最后一个文件(也就是最新的文件)
ll *.txt | sort -t'_' -k2,3 | tail -1 #这里tail -1取ll结果集中最后一个文件
3.然后用mv改名就可以了
ll *.txt | sort -t'_' -k2,3 #把文件名用'_'分隔成3部分,以第2,3部分排序
2.取最后一个文件(也就是最新的文件)
ll *.txt | sort -t'_' -k2,3 | tail -1 #这里tail -1取ll结果集中最后一个文件
3.然后用mv改名就可以了